www/tor-browser: Update to 13.01

Include locales upfront, the LOCAL/jsm l10n distfile is made
   by a tor-browser-build of project l10n-firefox.

   The tpo/translations do not keep tags so two files per locale
   are out of sync with the linux release.

PR:	273416
PR:	272477
Tested by:	Martin Filla freebsd@sysctl.cz,rene@
Approved by:	freebsd@sysctl.cz (maintainer)
This commit is contained in:
Jesper Schmitz Mouridsen 2023-11-09 20:16:52 +01:00
parent 9b214a66ea
commit 5bab21c20a
39 changed files with 45344 additions and 19358 deletions

View file

@ -1,11 +1,14 @@
PORTNAME= tor-browser
DISTVERSION= 12.0.6
PORTREVISION= 6
DISTVERSION= 13.0.1
CATEGORIES= www net security wayland
MASTER_SITES= TOR
MASTER_SITE_SUBDIR=torbrowser/${DISTVERSION}
DISTNAME= src-firefox-tor-browser-102.11.0esr-${DISTVERSION:R}-1-build1
MASTER_SITES= TOR \
https://build-sources.tbb.torproject.org/:source1 \
LOCAL/jsm:source2
MASTER_SITE_SUBDIR= torbrowser/${DISTVERSION}
DISTNAME= src-firefox-tor-browser-115.4.0esr-13.0-1-build2
DISTFILES= ${DISTNAME}.tar.xz \
manual_112141.zip:source1 \
firefox-tor-browser-13.0.1-build2-firefox-1l0n-out.tar:source2
MAINTAINER= freebsd@sysctl.cz
COMMENT= Tor Browser for FreeBSD
WWW= https://www.torproject.org/
@ -25,11 +28,16 @@ BUILD_DEPENDS= nspr>=4.32:devel/nspr \
nasm:devel/nasm \
yasm:devel/yasm \
zip:archivers/zip
USE_GITLAB=nodefault
GL_SITE= https://gitlab.torproject.org/
GL_ACCOUNT= tpo
GL_PROJECT= translation:basebrowser translation:torbrowser
GL_TAGNAME= 3faf7dcd545109f7bbd8a6374838e139ca422d6c:basebrowser 51bc08246d73990d461f747fb3c8cc7b6f66c1f4:torbrowser
RUN_DEPENDS= tor:security/tor \
obfs4proxy:security/obfs4proxy-tor
USES= compiler:c++11-lib libtool \
perl5 pkgconfig python shebangfix localbase:ldflags tar:xz
perl5 pkgconfig python shebangfix localbase:ldflags tar:xz python:3
USE_GECKO= gecko
SSP_UNSAFE= yes
@ -38,17 +46,19 @@ SUB_FILES= torrc-defaults tor-browser.desktop
BUNDLE_LIBS= yes
USE_MOZILLA= -sqlite
MOZILLA_VER=115.4.0
CFLAGS_powerpc64le= -DSQLITE_BYTEORDER=1234
CONFIGURE_ENV+= BINDGEN_CFLAGS="-I${LOCALBASE}/include" \
MOZ_BRANDING_DIRECTORY="browser/branding/official"
MOZ_CHROME_MULTILOCALE="ar ca cs da de el es-ES fa fi fr ga-IE he hu id is it ja ka ko lt mk ms my nb-NO nl pl pt-BR ro ru sq sv-SE th tr uk vi zh-CN zh-TW en-US"
MAKE_ENV+= AB_CD="multi" \
LOCALES="ar ca cs da de el es-ES fa fi fr ga-IE he hu id is it ja ka ko lt mk ms my nb-NO nl pl pt-BR ro ru sq sv-SE th tr uk vi zh-CN zh-TW en-US"
MOZ_EXPORT+= MOZ_TELEMETRY_REPORTING="" \
MOZILLA_OFFICIAL="1" \
MOZ_OFFICIAL_BRANDING="1" \
MOZ_APP_DISPLAYNAME="Tor Browser" \
MOZ_APP_NAME="tor-browser"
MOZ_OPTIONS= --with-tor-browser-version=${DISTVERSION}-1 \
MOZ_APP_NAME="tor-browser" \
MOZ_CHROME_MULTILOCALE="ar ca cs da de el es-ES fa fi fr ga-IE he hu id is it ja ka ko lt mk ms my nb-NO nl pl pt-BR ro ru sq sv-SE th tr uk vi zh-CN zh-TW en-US"
MOZ_OPTIONS= --with-base-browser-version=${DISTVERSION} \
--enable-official-branding \
--enable-optimize \
--enable-bundled-fonts \
@ -60,12 +70,11 @@ MOZ_OPTIONS= --with-tor-browser-version=${DISTVERSION}-1 \
--enable-proxy-bypass-protection \
--disable-system-policies \
--disable-backgroundtasks \
--enable-base-browser \
--enable-verify-mar \
--with-distribution-id=org.torproject
--with-distribution-id=org.torproject \
--with-branding=browser/branding/tb-release
WRKSRC= ${WRKDIR}/${DISTNAME:S/src-//}
SHEBANG_FILES+= mach
.include "${.CURDIR}/../../www/firefox/Makefile.options"
.include <bsd.port.options.mk>
@ -83,11 +92,29 @@ MOZ_OPTIONS+= --with-wasi-sysroot=${LOCALBASE}/share/wasi-sysroot
.endif
post-patch:
@${REINPLACE_CMD} 's|LOCALBASE|${LOCALBASE}|g' "${WRKSRC}/browser/app/profile/000-tor-browser.js"
${MKDIR} ${WRKSRC}/tmp-manual
unzip -d ${WRKSRC}/tmp-manual ${DISTDIR}/manual_112141.zip
${MKDIR} ${WRKSRC}/tmp-l10n-central
tar -C ${WRKSRC}/tmp-l10n-central -xf ${DISTDIR}/firefox-tor-browser-13.0.1-build2-firefox-1l0n-out.tar
pre-configure:
(cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf2.13)
(cd ${WRKSRC}/js/src/ && ${LOCALBASE}/bin/autoconf2.13)
@${REINPLACE_CMD} 's|export MOZ_GOOGLE_.*||g' ${WRKSRC}/.mozconfig
@${REINPLACE_CMD} 's|ac_add_options --enable-update-channel=release||g' ${WRKSRC}/.mozconfig
${PYTHON_CMD} ${FILESDIR}/packagemanual.py ${WRKSRC}/tmp-manual/public ${WRKSRC}/browser/base/content/manual
post-build:
${MKDIR} -p ${WRKSRC}/../.mozbuild/l10n-central
find ${WRKSRC}/tmp-l10n-central -name "*.tar.xz" -exec tar -C ${WRKSRC}/../.mozbuild/l10n-central -xvf {} \;
cd ${WRKSRC}/../.build/ && MOZBUILD_STATE_PATH=${WRKSRC}/../.mozbuild MOZ_AUTOMATION="1" ${WRKSRC}/mach package-multi-locale --locales ar ca cs da de el es-ES fa fi fr ga-IE he hu id is it ja ka ko lt mk ms my nb-NO nl pl pt-BR ro ru sq sv-SE th tr uk vi zh-CN zh-TW
.for i in ar ca cs da de el es-ES fa fi fr ga-IE he hu id is it ja ka ko lt mk ms my nb-NO nl pl pt-BR ro ru sq sv-SE th tr uk vi zh-CN zh-TW
${CP} ${WRKDIR}/translation-3faf7dcd545109f7bbd8a6374838e139ca422d6c/${i}/base-browser.ftl ${WRKDIR}/.build/dist/bin/browser/localization/${i}/browser/base-browser.ftl
${CP} ${WRKDIR}/translation-3faf7dcd545109f7bbd8a6374838e139ca422d6c/${i}/newIdentity.properties ${WRKDIR}/.build/dist/bin/browser/chrome/${i}/locale/browser/newIdentity.properties
${CP} ${WRKDIR}/translation-3faf7dcd545109f7bbd8a6374838e139ca422d6c/${i}/securityLevel.properties ${WRKDIR}/.build/dist/bin/browser/chrome/${i}/locale/browser/securityLevel.properties
${MKDIR} ${WRKDIR}/.build/dist/bin/chrome/torbutton/locale/${i}/browser
test -f ${WRKDIR}/translation-51bc08246d73990d461f747fb3c8cc7b6f66c1f4/${i}/tor-browser.ftl && ${CP} ${WRKDIR}/translation-51bc08246d73990d461f747fb3c8cc7b6f66c1f4/${i}/tor-browser.ftl ${WRKDIR}/.build/dist/bin/browser/localization/${i}/browser/tor-browser.ftl
${CP} ${WRKDIR}/translation-51bc08246d73990d461f747fb3c8cc7b6f66c1f4/${i}/cryptoSafetyPrompt.properties ${WRKDIR}/.build/dist/bin/browser/chrome/${i}/locale/browser/cryptoSafetyPrompt.properties
.for j in brand.dtd aboutDialog.dtd aboutTBUpdate.dtd torbutton.dtd onboarding.properties brand.properties torlauncher.properties branding/brand.ftl rulesets.properties settings.properties torConnect.properties onionLocation.properties aboutTor.dtd torbutton.properties browserOnboarding.properties
${MKDIR} ${WRKDIR}/.build/dist/bin/chrome/torbutton/locale/${i}/branding
${CP} ${WRKDIR}/translation-51bc08246d73990d461f747fb3c8cc7b6f66c1f4/${i}/${j} ${WRKDIR}/.build/dist/bin/chrome/torbutton/locale/${i}/${j}
.endfor
.endfor
post-install:
@${MKDIR} ${STAGEDIR}${DATADIR}
${INSTALL_DATA} ${WRKDIR}/torrc-defaults ${STAGEDIR}${DATADIR}/torrc-defaults

View file

@ -1,3 +1,11 @@
TIMESTAMP = 1684065683
SHA256 (src-firefox-tor-browser-102.11.0esr-12.0-1-build1.tar.xz) = 9b64d00e9bb5ad63f005e8f950800ab3a12f75f214c55f900d88df26bce1ba5d
SIZE (src-firefox-tor-browser-102.11.0esr-12.0-1-build1.tar.xz) = 511957244
TIMESTAMP = 1699195800
SHA256 (src-firefox-tor-browser-115.4.0esr-13.0-1-build2.tar.xz) = 7b8d90c9d5ac0cc527da5e8170893e6c5af0f7ad924cfcde9a7ebfbdf3f2e486
SIZE (src-firefox-tor-browser-115.4.0esr-13.0-1-build2.tar.xz) = 544811340
SHA256 (manual_112141.zip) = f767bc5f655f1263623b7af588cfb045d3e41ee019dc7ecd713decc5c1a0ea9b
SIZE (manual_112141.zip) = 26293073
SHA256 (firefox-tor-browser-13.0.1-build2-firefox-1l0n-out.tar) = bbd290cd134e3a114241077ba82582617ab6c5117ff2226381943c504bd09775
SIZE (firefox-tor-browser-13.0.1-build2-firefox-1l0n-out.tar) = 18848768
SHA256 (tpo-translation-3faf7dcd545109f7bbd8a6374838e139ca422d6c_GL0.tar.gz) = e6fdc79f74d2c438a44e5ffb6404e3d64bab879cf146e88a170ccdcef3596d9b
SIZE (tpo-translation-3faf7dcd545109f7bbd8a6374838e139ca422d6c_GL0.tar.gz) = 108057
SHA256 (tpo-translation-51bc08246d73990d461f747fb3c8cc7b6f66c1f4_GL0.tar.gz) = a57dd8210d347ca69f5731cd768862673d692c0a5a3364f411cc5fa1fb88c98e
SIZE (tpo-translation-51bc08246d73990d461f747fb3c8cc7b6f66c1f4_GL0.tar.gz) = 1059523

View file

@ -0,0 +1,69 @@
#!/usr/bin/env python3
from pathlib import Path
import re
import sys
import shutil
PAGE_NAME = 'offline-docs'
STATIC_PATH = 'chrome://browser/content/manual/static'
if len(sys.argv) < 3:
print(f'Usage: {sys.argv[0]} lektor-out-directory target-directory')
sys.exit(1)
source = Path(sys.argv[1])
target = Path(sys.argv[2])
if not target.exists():
target.mkdir(exist_ok=True)
static_re = re.compile('"(?:../)*static/([^"]+)"')
link_re = re.compile('href="../([^"]+)"')
def clean_urls(match):
m = re.match(r'(?:../)?([^/#]+)[/]?[#]?(.*)', match.group(1))
slug = m.group(1)
if m.group(2):
anchor = '_' + m.group(2)
else:
anchor = ''
return f'href="#{slug}{anchor}"'
remove_images = []
for p in (source / 'static/images').glob('**/*'):
if p.is_file():
rel = p.relative_to(source)
remove_images.append(rel)
htmls = source.rglob(f'{PAGE_NAME}/index.html')
for page in htmls:
with page.open(encoding='utf8') as f:
contents = f.read()
remove_images = list(filter(
lambda im: contents.find(str(im)) == -1, remove_images))
contents = static_re.sub(f'"{STATIC_PATH}/\\1"', contents)
contents = link_re.sub(clean_urls, contents)
rel = page.relative_to(source)
dest_name = str(list(rel.parents)[-2].name)
if dest_name == PAGE_NAME:
dest_name = 'en'
dest_name += '.html'
with (target / dest_name).open('w', encoding='utf8') as f:
f.write(contents)
def ignore_images(path, names):
return [
n
for n in names
if Path(path, n).relative_to(source) in remove_images
]
shutil.rmtree(target / 'static', ignore_errors=True)
shutil.copytree(source / 'static', target / 'static', ignore=ignore_images)

View file

@ -2,7 +2,7 @@ https://github.com/mozilla/addons/issues/708
https://github.com/mozilla/addons-frontend/issues/4610
diff --git browser/app/profile/firefox.js browser/app/profile/firefox.js
index af08811..77a3b18 100644
index 621900f90fc1..401ef9074bd0 100644
--- browser/app/profile/firefox.js
+++ browser/app/profile/firefox.js
@@ -38,7 +38,7 @@ pref("extensions.postDownloadThirdPartyPrompt", true);
@ -14,7 +14,7 @@ index af08811..77a3b18 100644
pref("extensions.getAddons.link.url", "https://addons.mozilla.org/%LOCALE%/firefox/");
pref("extensions.getAddons.langpacks.url", "https://services.addons.mozilla.org/api/v4/addons/language-tools/?app=firefox&type=language&appversion=%VERSION%");
pref("extensions.getAddons.discovery.api_url", "https://services.addons.mozilla.org/api/v4/discovery/?lang=%LOCALE%&edition=%DISTRIBUTION%");
@@ -193,8 +193,8 @@ pref("app.update.langpack.enabled", true);
@@ -204,8 +204,8 @@ pref("app.update.langpack.enabled", true);
// .. etc ..
//
pref("extensions.update.enabled", true);
@ -25,24 +25,24 @@ index af08811..77a3b18 100644
pref("extensions.update.interval", 86400); // Check for updates to Extensions and
// Themes every day
diff --git toolkit/mozapps/extensions/internal/AddonRepository.jsm toolkit/mozapps/extensions/internal/AddonRepository.jsm
index 661c902..a41b32f 100644
--- toolkit/mozapps/extensions/internal/AddonRepository.jsm
+++ toolkit/mozapps/extensions/internal/AddonRepository.jsm
@@ -592,7 +592,7 @@ var AddonRepository = {
diff --git toolkit/mozapps/extensions/internal/AddonRepository.sys.mjs toolkit/mozapps/extensions/internal/AddonRepository.sys.mjs
index f906f244b658..7bb2eb6697c6 100644
--- toolkit/mozapps/extensions/internal/AddonRepository.sys.mjs
+++ toolkit/mozapps/extensions/internal/AddonRepository.sys.mjs
@@ -596,7 +596,7 @@ export var AddonRepository = {
addon.version = String(aEntry.current_version.version);
if (Array.isArray(aEntry.current_version.files)) {
for (let file of aEntry.current_version.files) {
- if (file.platform == "all" || file.platform == PLATFORM) {
+ if (file.platform == "all" || file.platform == "linux" || file.platform == PLATFORM) {
- if (file.platform == "all" || file.platform == lazy.PLATFORM) {
+ if (file.platform == "all" || file.platform == "linux" || file.platform == lazy.PLATFORM) {
if (file.url) {
addon.sourceURI = NetUtil.newURI(file.url);
addon.sourceURI = lazy.NetUtil.newURI(file.url);
}
diff --git toolkit/mozapps/extensions/internal/XPIDatabase.jsm toolkit/mozapps/extensions/internal/XPIDatabase.jsm
index f8c99c7..c6ba8a1 100644
index 03186dad43a4..4053fc6f2702 100644
--- toolkit/mozapps/extensions/internal/XPIDatabase.jsm
+++ toolkit/mozapps/extensions/internal/XPIDatabase.jsm
@@ -520,7 +520,7 @@ class AddonInternal {
@@ -634,7 +634,7 @@ class AddonInternal {
// Something is causing errors in here
try {
for (let platform of this.targetPlatforms) {

View file

@ -1,14 +1,12 @@
diff --git browser/app/nsBrowserApp.cpp browser/app/nsBrowserApp.cpp
index 87c2e16..a41f1d9 100644
--- browser/app/nsBrowserApp.cpp
--- browser/app/nsBrowserApp.cpp.orig 2016-09-19 16:19:28 UTC
+++ browser/app/nsBrowserApp.cpp
@@ -337,6 +337,9 @@ int main(int argc, char* argv[], char* envp[]) {
}
#endif
@@ -324,6 +324,9 @@ int main(int argc, char* argv[], char* e
{
mozilla::TimeStamp start = mozilla::TimeStamp::Now();
+ setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+ setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
+
#ifdef HAS_DLL_BLOCKLIST
DllBlocklist_Initialize(gBlocklistInitFlags);
#endif
DllBlocklist_Initialize();

View file

@ -0,0 +1,227 @@
--- browser/base/jar.mn.orig 2023-10-21 13:09:52.025195000 +0000
+++ browser/base/jar.mn 2023-10-21 13:10:04.930188000 +0000
@@ -112,3 +112,224 @@
* content/browser/default-bookmarks.html (content/default-bookmarks.html)
content/browser/languageNotification.js (content/languageNotification.js)
+ content/browser/manual/ar.html (content/manual/ar.html)
+ content/browser/manual/bn.html (content/manual/bn.html)
+ content/browser/manual/ca.html (content/manual/ca.html)
+ content/browser/manual/de.html (content/manual/de.html)
+ content/browser/manual/el.html (content/manual/el.html)
+ content/browser/manual/en.html (content/manual/en.html)
+ content/browser/manual/es.html (content/manual/es.html)
+ content/browser/manual/fa.html (content/manual/fa.html)
+ content/browser/manual/fi.html (content/manual/fi.html)
+ content/browser/manual/fr.html (content/manual/fr.html)
+ content/browser/manual/ga.html (content/manual/ga.html)
+ content/browser/manual/he.html (content/manual/he.html)
+ content/browser/manual/hu.html (content/manual/hu.html)
+ content/browser/manual/id.html (content/manual/id.html)
+ content/browser/manual/is.html (content/manual/is.html)
+ content/browser/manual/it.html (content/manual/it.html)
+ content/browser/manual/ka.html (content/manual/ka.html)
+ content/browser/manual/km.html (content/manual/km.html)
+ content/browser/manual/ko.html (content/manual/ko.html)
+ content/browser/manual/lt.html (content/manual/lt.html)
+ content/browser/manual/mk.html (content/manual/mk.html)
+ content/browser/manual/my.html (content/manual/my.html)
+ content/browser/manual/pl.html (content/manual/pl.html)
+ content/browser/manual/pt-BR.html (content/manual/pt-BR.html)
+ content/browser/manual/pt-PT.html (content/manual/pt-PT.html)
+ content/browser/manual/ro.html (content/manual/ro.html)
+ content/browser/manual/ru.html (content/manual/ru.html)
+ content/browser/manual/sq.html (content/manual/sq.html)
+ content/browser/manual/static/collapse.min.js (content/manual/static/collapse.min.js)
+ content/browser/manual/static/css/bootstrap-grid.css (content/manual/static/css/bootstrap-grid.css)
+ content/browser/manual/static/css/bootstrap-reboot.css (content/manual/static/css/bootstrap-reboot.css)
+ content/browser/manual/static/css/bootstrap.css (content/manual/static/css/bootstrap.css)
+ content/browser/manual/static/fonts/Corben/Corben-Bold.ttf (content/manual/static/fonts/Corben/Corben-Bold.ttf)
+ content/browser/manual/static/fonts/Corben/Corben.ttf (content/manual/static/fonts/Corben/Corben.ttf)
+ content/browser/manual/static/fonts/Hanuman/Hanuman-Black.ttf (content/manual/static/fonts/Hanuman/Hanuman-Black.ttf)
+ content/browser/manual/static/fonts/Hanuman/Hanuman-Bold.ttf (content/manual/static/fonts/Hanuman/Hanuman-Bold.ttf)
+ content/browser/manual/static/fonts/Hanuman/Hanuman-Light.ttf (content/manual/static/fonts/Hanuman/Hanuman-Light.ttf)
+ content/browser/manual/static/fonts/Hanuman/Hanuman-Regular.ttf (content/manual/static/fonts/Hanuman/Hanuman-Regular.ttf)
+ content/browser/manual/static/fonts/Hanuman/Hanuman-Thin.ttf (content/manual/static/fonts/Hanuman/Hanuman-Thin.ttf)
+ content/browser/manual/static/fonts/Hanuman/OFL.txt (content/manual/static/fonts/Hanuman/OFL.txt)
+ content/browser/manual/static/fonts/Kanit/kanit.woff2 (content/manual/static/fonts/Kanit/kanit.woff2)
+ content/browser/manual/static/fonts/LeagueGothic/LeagueGothic-Italic.otf (content/manual/static/fonts/LeagueGothic/LeagueGothic-Italic.otf)
+ content/browser/manual/static/fonts/LeagueGothic/League_Gothic_Regular.woff (content/manual/static/fonts/LeagueGothic/League_Gothic_Regular.woff)
+ content/browser/manual/static/fonts/SourceCodePro/OFL.txt (content/manual/static/fonts/SourceCodePro/OFL.txt)
+ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-Black.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-Black.ttf)
+ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-Bold.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-Bold.ttf)
+ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-ExtraLight.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-ExtraLight.ttf)
+ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-Light.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-Light.ttf)
+ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-Medium.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-Medium.ttf)
+ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-Regular.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-Regular.ttf)
+ content/browser/manual/static/fonts/SourceCodePro/SourceCodePro-Semibold.ttf (content/manual/static/fonts/SourceCodePro/SourceCodePro-Semibold.ttf)
+ content/browser/manual/static/fonts/SourceSansPro/OFL.txt (content/manual/static/fonts/SourceSansPro/OFL.txt)
+ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-Black.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-Black.ttf)
+ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-BlackItalic.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-BlackItalic.ttf)
+ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-Bold.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-Bold.ttf)
+ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-BoldItalic.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-BoldItalic.ttf)
+ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-ExtraLight.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-ExtraLight.ttf)
+ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-ExtraLightItalic.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-ExtraLightItalic.ttf)
+ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-Italic.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-Italic.ttf)
+ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-Light.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-Light.ttf)
+ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-LightItalic.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-LightItalic.ttf)
+ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-Regular.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-Regular.ttf)
+ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-SemiBold.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-SemiBold.ttf)
+ content/browser/manual/static/fonts/SourceSansPro/SourceSansPro-SemiBoldItalic.ttf (content/manual/static/fonts/SourceSansPro/SourceSansPro-SemiBoldItalic.ttf)
+ content/browser/manual/static/fonts/SourceSerifPro/OFL.txt (content/manual/static/fonts/SourceSerifPro/OFL.txt)
+ content/browser/manual/static/fonts/SourceSerifPro/SourceSerifPro-Bold.ttf (content/manual/static/fonts/SourceSerifPro/SourceSerifPro-Bold.ttf)
+ content/browser/manual/static/fonts/SourceSerifPro/SourceSerifPro-Regular.ttf (content/manual/static/fonts/SourceSerifPro/SourceSerifPro-Regular.ttf)
+ content/browser/manual/static/fonts/SourceSerifPro/SourceSerifPro-Semibold.ttf (content/manual/static/fonts/SourceSerifPro/SourceSerifPro-Semibold.ttf)
+ content/browser/manual/static/fonts/TorIcons/tor-icons.eot (content/manual/static/fonts/TorIcons/tor-icons.eot)
+ content/browser/manual/static/fonts/TorIcons/tor-icons.svg (content/manual/static/fonts/TorIcons/tor-icons.svg)
+ content/browser/manual/static/fonts/TorIcons/tor-icons.ttf (content/manual/static/fonts/TorIcons/tor-icons.ttf)
+ content/browser/manual/static/fonts/TorIcons/tor-icons.woff (content/manual/static/fonts/TorIcons/tor-icons.woff)
+ content/browser/manual/static/fonts/TorIcons/tor-icons.woff2 (content/manual/static/fonts/TorIcons/tor-icons.woff2)
+ content/browser/manual/static/fonts/WhiteonBlack/WhiteOnBlack.ttf (content/manual/static/fonts/WhiteonBlack/WhiteOnBlack.ttf)
+ content/browser/manual/static/fonts/fontawesome/LICENSE.txt (content/manual/static/fonts/fontawesome/LICENSE.txt)
+ content/browser/manual/static/fonts/fontawesome/css/all.css (content/manual/static/fonts/fontawesome/css/all.css)
+ content/browser/manual/static/fonts/fontawesome/css/all.min.css (content/manual/static/fonts/fontawesome/css/all.min.css)
+ content/browser/manual/static/fonts/fontawesome/css/brands.css (content/manual/static/fonts/fontawesome/css/brands.css)
+ content/browser/manual/static/fonts/fontawesome/css/brands.min.css (content/manual/static/fonts/fontawesome/css/brands.min.css)
+ content/browser/manual/static/fonts/fontawesome/css/fontawesome.css (content/manual/static/fonts/fontawesome/css/fontawesome.css)
+ content/browser/manual/static/fonts/fontawesome/css/fontawesome.min.css (content/manual/static/fonts/fontawesome/css/fontawesome.min.css)
+ content/browser/manual/static/fonts/fontawesome/css/regular.css (content/manual/static/fonts/fontawesome/css/regular.css)
+ content/browser/manual/static/fonts/fontawesome/css/regular.min.css (content/manual/static/fonts/fontawesome/css/regular.min.css)
+ content/browser/manual/static/fonts/fontawesome/css/solid.css (content/manual/static/fonts/fontawesome/css/solid.css)
+ content/browser/manual/static/fonts/fontawesome/css/solid.min.css (content/manual/static/fonts/fontawesome/css/solid.min.css)
+ content/browser/manual/static/fonts/fontawesome/css/svg-with-js.css (content/manual/static/fonts/fontawesome/css/svg-with-js.css)
+ content/browser/manual/static/fonts/fontawesome/css/svg-with-js.min.css (content/manual/static/fonts/fontawesome/css/svg-with-js.min.css)
+ content/browser/manual/static/fonts/fontawesome/css/v4-shims.css (content/manual/static/fonts/fontawesome/css/v4-shims.css)
+ content/browser/manual/static/fonts/fontawesome/css/v4-shims.min.css (content/manual/static/fonts/fontawesome/css/v4-shims.min.css)
+ content/browser/manual/static/fonts/fontawesome/png/dark/solid/arrow-down.png (content/manual/static/fonts/fontawesome/png/dark/solid/arrow-down.png)
+ content/browser/manual/static/fonts/fontawesome/png/dark/solid/language.png (content/manual/static/fonts/fontawesome/png/dark/solid/language.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/brands/facebook.png (content/manual/static/fonts/fontawesome/png/primary/brands/facebook.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/brands/instagram.png (content/manual/static/fonts/fontawesome/png/primary/brands/instagram.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/brands/linkedin.png (content/manual/static/fonts/fontawesome/png/primary/brands/linkedin.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/brands/mastodon.png (content/manual/static/fonts/fontawesome/png/primary/brands/mastodon.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/brands/telegram.png (content/manual/static/fonts/fontawesome/png/primary/brands/telegram.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/brands/twitter.png (content/manual/static/fonts/fontawesome/png/primary/brands/twitter.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/brands/youtube.png (content/manual/static/fonts/fontawesome/png/primary/brands/youtube.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/regular/file-alt.png (content/manual/static/fonts/fontawesome/png/primary/regular/file-alt.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/arrow-down.png (content/manual/static/fonts/fontawesome/png/primary/solid/arrow-down.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/arrow-right.png (content/manual/static/fonts/fontawesome/png/primary/solid/arrow-right.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/comments.png (content/manual/static/fonts/fontawesome/png/primary/solid/comments.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/cube.png (content/manual/static/fonts/fontawesome/png/primary/solid/cube.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/flag.png (content/manual/static/fonts/fontawesome/png/primary/solid/flag.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/folder-open.png (content/manual/static/fonts/fontawesome/png/primary/solid/folder-open.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/hands-helping.png (content/manual/static/fonts/fontawesome/png/primary/solid/hands-helping.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/key.png (content/manual/static/fonts/fontawesome/png/primary/solid/key.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/language.png (content/manual/static/fonts/fontawesome/png/primary/solid/language.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/life-ring.png (content/manual/static/fonts/fontawesome/png/primary/solid/life-ring.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/lock.png (content/manual/static/fonts/fontawesome/png/primary/solid/lock.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/magnifying-glass.png (content/manual/static/fonts/fontawesome/png/primary/solid/magnifying-glass.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/paper-plane.png (content/manual/static/fonts/fontawesome/png/primary/solid/paper-plane.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/signature.png (content/manual/static/fonts/fontawesome/png/primary/solid/signature.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/spider.png (content/manual/static/fonts/fontawesome/png/primary/solid/spider.png)
+ content/browser/manual/static/fonts/fontawesome/png/primary/solid/table-tennis.png (content/manual/static/fonts/fontawesome/png/primary/solid/table-tennis.png)
+ content/browser/manual/static/fonts/fontawesome/png/white/brands/android.png (content/manual/static/fonts/fontawesome/png/white/brands/android.png)
+ content/browser/manual/static/fonts/fontawesome/png/white/brands/apple.png (content/manual/static/fonts/fontawesome/png/white/brands/apple.png)
+ content/browser/manual/static/fonts/fontawesome/png/white/brands/facebook.png (content/manual/static/fonts/fontawesome/png/white/brands/facebook.png)
+ content/browser/manual/static/fonts/fontawesome/png/white/brands/github.png (content/manual/static/fonts/fontawesome/png/white/brands/github.png)
+ content/browser/manual/static/fonts/fontawesome/png/white/brands/instagram.png (content/manual/static/fonts/fontawesome/png/white/brands/instagram.png)
+ content/browser/manual/static/fonts/fontawesome/png/white/brands/linkedin.png (content/manual/static/fonts/fontawesome/png/white/brands/linkedin.png)
+ content/browser/manual/static/fonts/fontawesome/png/white/brands/linux.png (content/manual/static/fonts/fontawesome/png/white/brands/linux.png)
+ content/browser/manual/static/fonts/fontawesome/png/white/brands/mastodon.png (content/manual/static/fonts/fontawesome/png/white/brands/mastodon.png)
+ content/browser/manual/static/fonts/fontawesome/png/white/brands/twitter.png (content/manual/static/fonts/fontawesome/png/white/brands/twitter.png)
+ content/browser/manual/static/fonts/fontawesome/png/white/brands/windows.png (content/manual/static/fonts/fontawesome/png/white/brands/windows.png)
+ content/browser/manual/static/fonts/fontawesome/png/white/solid/arrow-down.png (content/manual/static/fonts/fontawesome/png/white/solid/arrow-down.png)
+ content/browser/manual/static/fonts/fontawesome/png/white/solid/arrow-right.png (content/manual/static/fonts/fontawesome/png/white/solid/arrow-right.png)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-brands-400.eot (content/manual/static/fonts/fontawesome/webfonts/fa-brands-400.eot)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-brands-400.svg (content/manual/static/fonts/fontawesome/webfonts/fa-brands-400.svg)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-brands-400.ttf (content/manual/static/fonts/fontawesome/webfonts/fa-brands-400.ttf)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-brands-400.woff (content/manual/static/fonts/fontawesome/webfonts/fa-brands-400.woff)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-brands-400.woff2 (content/manual/static/fonts/fontawesome/webfonts/fa-brands-400.woff2)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-regular-400.eot (content/manual/static/fonts/fontawesome/webfonts/fa-regular-400.eot)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-regular-400.svg (content/manual/static/fonts/fontawesome/webfonts/fa-regular-400.svg)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-regular-400.ttf (content/manual/static/fonts/fontawesome/webfonts/fa-regular-400.ttf)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-regular-400.woff (content/manual/static/fonts/fontawesome/webfonts/fa-regular-400.woff)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-regular-400.woff2 (content/manual/static/fonts/fontawesome/webfonts/fa-regular-400.woff2)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-solid-900.eot (content/manual/static/fonts/fontawesome/webfonts/fa-solid-900.eot)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-solid-900.svg (content/manual/static/fonts/fontawesome/webfonts/fa-solid-900.svg)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-solid-900.ttf (content/manual/static/fonts/fontawesome/webfonts/fa-solid-900.ttf)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-solid-900.woff (content/manual/static/fonts/fontawesome/webfonts/fa-solid-900.woff)
+ content/browser/manual/static/fonts/fontawesome/webfonts/fa-solid-900.woff2 (content/manual/static/fonts/fontawesome/webfonts/fa-solid-900.woff2)
+ content/browser/manual/static/fonts/grotesque/terminal-grotesque_open.otf (content/manual/static/fonts/grotesque/terminal-grotesque_open.otf)
+ content/browser/manual/static/images/android-censored.png (content/manual/static/images/android-censored.png)
+ content/browser/manual/static/images/android-configure.png (content/manual/static/images/android-configure.png)
+ content/browser/manual/static/images/android-connect.png (content/manual/static/images/android-connect.png)
+ content/browser/manual/static/images/android-new-identity.png (content/manual/static/images/android-new-identity.png)
+ content/browser/manual/static/images/android-provide-a-bridge.png (content/manual/static/images/android-provide-a-bridge.png)
+ content/browser/manual/static/images/android-provided-a-bridge.png (content/manual/static/images/android-provided-a-bridge.png)
+ content/browser/manual/static/images/android-security-settings.gif (content/manual/static/images/android-security-settings.gif)
+ content/browser/manual/static/images/android-select-a-bridge.png (content/manual/static/images/android-select-a-bridge.png)
+ content/browser/manual/static/images/android-selected-a-bridge.png (content/manual/static/images/android-selected-a-bridge.png)
+ content/browser/manual/static/images/android-uninstall-device-settings.png (content/manual/static/images/android-uninstall-device-settings.png)
+ content/browser/manual/static/images/android-uninstall-f-droid.png (content/manual/static/images/android-uninstall-f-droid.png)
+ content/browser/manual/static/images/android-uninstall-google-play.png (content/manual/static/images/android-uninstall-google-play.png)
+ content/browser/manual/static/images/android-update-f-droid.png (content/manual/static/images/android-update-f-droid.png)
+ content/browser/manual/static/images/android-update-google-play.png (content/manual/static/images/android-update-google-play.png)
+ content/browser/manual/static/images/android-view-logs.gif (content/manual/static/images/android-view-logs.gif)
+ content/browser/manual/static/images/bridge-qr.png (content/manual/static/images/bridge-qr.png)
+ content/browser/manual/static/images/bridgemoji.png (content/manual/static/images/bridgemoji.png)
+ content/browser/manual/static/images/built-in-bridge.png (content/manual/static/images/built-in-bridge.png)
+ content/browser/manual/static/images/circuit_full.png (content/manual/static/images/circuit_full.png)
+ content/browser/manual/static/images/client-auth.png (content/manual/static/images/client-auth.png)
+ content/browser/manual/static/images/configure.png (content/manual/static/images/configure.png)
+ content/browser/manual/static/images/connect.png (content/manual/static/images/connect.png)
+ content/browser/manual/static/images/connection-assist-auto.png (content/manual/static/images/connection-assist-auto.png)
+ content/browser/manual/static/images/connection-assist-offline.png (content/manual/static/images/connection-assist-offline.png)
+ content/browser/manual/static/images/connection-assist-select.png (content/manual/static/images/connection-assist-select.png)
+ content/browser/manual/static/images/connection-assist-test.png (content/manual/static/images/connection-assist-test.png)
+ content/browser/manual/static/images/connection-test-failure.png (content/manual/static/images/connection-test-failure.png)
+ content/browser/manual/static/images/connection-test-success.png (content/manual/static/images/connection-test-success.png)
+ content/browser/manual/static/images/gettor-bot-telegram.png (content/manual/static/images/gettor-bot-telegram.png)
+ content/browser/manual/static/images/how-tor-works.png (content/manual/static/images/how-tor-works.png)
+ content/browser/manual/static/images/http-website-error.png (content/manual/static/images/http-website-error.png)
+ content/browser/manual/static/images/https-only-mode.png (content/manual/static/images/https-only-mode.png)
+ content/browser/manual/static/images/linux-make-desktop-file-executable.png (content/manual/static/images/linux-make-desktop-file-executable.png)
+ content/browser/manual/static/images/macos-go-to-folder-menu.png (content/manual/static/images/macos-go-to-folder-menu.png)
+ content/browser/manual/static/images/macos-go-to-folder-window.png (content/manual/static/images/macos-go-to-folder-window.png)
+ content/browser/manual/static/images/new_identity.png (content/manual/static/images/new_identity.png)
+ content/browser/manual/static/images/onion-location.png (content/manual/static/images/onion-location.png)
+ content/browser/manual/static/images/pluggable-transport.png (content/manual/static/images/pluggable-transport.png)
+ content/browser/manual/static/images/provide-bridge.png (content/manual/static/images/provide-bridge.png)
+ content/browser/manual/static/images/proxy.png (content/manual/static/images/proxy.png)
+ content/browser/manual/static/images/quickstart.png (content/manual/static/images/quickstart.png)
+ content/browser/manual/static/images/request-a-bridge.png (content/manual/static/images/request-a-bridge.png)
+ content/browser/manual/static/images/security-settings-anim.gif (content/manual/static/images/security-settings-anim.gif)
+ content/browser/manual/static/images/security-settings-safest.png (content/manual/static/images/security-settings-safest.png)
+ content/browser/manual/static/images/tor-https-0.png (content/manual/static/images/tor-https-0.png)
+ content/browser/manual/static/images/tor-https-1.png (content/manual/static/images/tor-https-1.png)
+ content/browser/manual/static/images/tor-https-2.png (content/manual/static/images/tor-https-2.png)
+ content/browser/manual/static/images/tor-https-3.png (content/manual/static/images/tor-https-3.png)
+ content/browser/manual/static/images/update1.png (content/manual/static/images/update1.png)
+ content/browser/manual/static/images/update4.png (content/manual/static/images/update4.png)
+ content/browser/manual/static/js/anchor.min.js (content/manual/static/js/anchor.min.js)
+ content/browser/manual/static/js/bootstrap.bundle.js (content/manual/static/js/bootstrap.bundle.js)
+ content/browser/manual/static/js/bootstrap.bundle.js.map (content/manual/static/js/bootstrap.bundle.js.map)
+ content/browser/manual/static/js/bootstrap.bundle.min.js (content/manual/static/js/bootstrap.bundle.min.js)
+ content/browser/manual/static/js/bootstrap.bundle.min.js.map (content/manual/static/js/bootstrap.bundle.min.js.map)
+ content/browser/manual/static/js/bootstrap.js (content/manual/static/js/bootstrap.js)
+ content/browser/manual/static/js/bootstrap.js.map (content/manual/static/js/bootstrap.js.map)
+ content/browser/manual/static/js/bootstrap.min.js (content/manual/static/js/bootstrap.min.js)
+ content/browser/manual/static/js/bootstrap.min.js.map (content/manual/static/js/bootstrap.min.js.map)
+ content/browser/manual/static/js/clipboard.min.js (content/manual/static/js/clipboard.min.js)
+ content/browser/manual/static/js/collapse.min.js (content/manual/static/js/collapse.min.js)
+ content/browser/manual/static/js/download.js (content/manual/static/js/download.js)
+ content/browser/manual/static/js/errors.js (content/manual/static/js/errors.js)
+ content/browser/manual/static/js/fallback.js (content/manual/static/js/fallback.js)
+ content/browser/manual/static/js/holder.min.js (content/manual/static/js/holder.min.js)
+ content/browser/manual/static/js/jquery-3.2.1.min.js (content/manual/static/js/jquery-3.2.1.min.js)
+ content/browser/manual/static/js/jquery-slim.min.js (content/manual/static/js/jquery-slim.min.js)
+ content/browser/manual/static/js/modernizr.js (content/manual/static/js/modernizr.js)
+ content/browser/manual/static/js/popper.min.js (content/manual/static/js/popper.min.js)
+ content/browser/manual/static/js/scrollspy.min.js (content/manual/static/js/scrollspy.min.js)
+ content/browser/manual/static/js/util.min.js (content/manual/static/js/util.min.js)
+ content/browser/manual/sw.html (content/manual/sw.html)
+ content/browser/manual/th.html (content/manual/th.html)
+ content/browser/manual/tr.html (content/manual/tr.html)
+ content/browser/manual/uk.html (content/manual/uk.html)
+ content/browser/manual/vi.html (content/manual/vi.html)
+ content/browser/manual/zh-CN.html (content/manual/zh-CN.html)
+ content/browser/manual/zh-TW.html (content/manual/zh-TW.html)

View file

@ -1,6 +1,9 @@
--- browser/app/profile/000-tor-browser.js.orig 2022-11-30 11:37:40 UTC
Set all path-related prefs to minimize patching of tl-util.jsm/tl-process.js
Index: browser/app/profile/000-tor-browser.js
--- browser/app/profile/000-tor-browser.js.orig
+++ browser/app/profile/000-tor-browser.js
@@ -123,14 +123,17 @@ pref("extensions.torlauncher.socks_port_flags", "Exten
@@ -100,7 +100,10 @@ pref("extensions.torlauncher.socks_port_flags", "Exten
// The tor_path is relative to the application directory. On Linux and
// Windows this is the Browser/ directory that contains the firefox
// executables, and on Mac OS it is the TorBrowser.app directory.
@ -12,12 +15,3 @@
// The torrc_path and tordatadir_path are relative to the data directory,
// which is TorBrowser-Data/ if it exists as a sibling of the application
// directory. If TorBrowser-Data/ does not exist, these paths are relative
// to the TorBrowser/ directory within the application directory.
-pref("extensions.torlauncher.torrc_path", "");
-pref("extensions.torlauncher.tordatadir_path", "");
+pref("extensions.torlauncher.torrc_path", "torrc");
+pref("extensions.torlauncher.tordatadir_path", "tor_data");
// BridgeDB-related preferences (used for Moat).
pref("extensions.torlauncher.bridgedb_front", "cdn.sstatic.net");

View file

@ -0,0 +1,10 @@
--- modules/libpref/Preferences.cpp.orig 2023-05-11 21:42:41 UTC
+++ modules/libpref/Preferences.cpp
@@ -6126,6 +6126,7 @@ static const PrefListEntry sDynamicPrefOverrideList[]{
PREF_LIST_ENTRY("logging.config.LOG_FILE"),
PREF_LIST_ENTRY("media.audio_loopback_dev"),
PREF_LIST_ENTRY("media.decoder-doctor."),
+ PREF_LIST_ENTRY("media.cubeb.backend"),
PREF_LIST_ENTRY("media.cubeb.output_device"),
PREF_LIST_ENTRY("media.getusermedia.fake-camera-name"),
PREF_LIST_ENTRY("media.hls.server.url"),

View file

@ -37,10 +37,8 @@ index 6b3bdc7..7c6c342 100644
// The following values are OS and endian-independent synonyms.
//
diff --git gfx/skia/skia/third_party/skcms/skcms.cc gfx/skia/skia/third_party/skcms/skcms.cc
index 6b4d87b..7c0559d 100644
--- gfx/skia/skia/third_party/skcms/skcms.cc
+++ gfx/skia/skia/third_party/skcms/skcms.cc
--- gfx/skia/skia/modules/skcms/skcms.cc.orig
+++ gfx/skia/skia/modules/skcms/skcms.cc
@@ -30,6 +30,8 @@
#include <avx512fintrin.h>
#include <avx512dqintrin.h>
@ -49,8 +47,8 @@ index 6b4d87b..7c0559d 100644
+ #define SKCMS_PORTABLE
#endif
// sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others.
@@ -280,20 +282,28 @@ enum {
static bool runtime_cpu_detection = true;
@@ -324,20 +326,28 @@
static uint16_t read_big_u16(const uint8_t* ptr) {
uint16_t be;
memcpy(&be, ptr, sizeof(be));

View file

@ -1,49 +0,0 @@
https://bugzilla.mozilla.org/show_bug.cgi?id=1504834#c9
https://bugzilla.mozilla.org/attachment.cgi?id=9111146
mozilla-bmo1504834-part3.patch
# HG changeset patch
# Parent aecb4600e5da17443b224c79eee178c1d8e155e3
For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the
right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white).
diff -r aecb4600e5da gfx/skia/skia/include/private/SkNx.h
--- gfx/skia/skia/include/private/SkNx.h Tue Aug 20 09:46:55 2019 +0200
+++ gfx/skia/skia/include/private/SkNx.h Mon Sep 09 10:04:06 2019 +0200
@@ -238,7 +238,18 @@
AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; }
AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; }
+ // On Big endian the commented out variant doesn't work,
+ // and honestly, I have no idea why it exists in the first place.
+ // The reason its broken is, I think, that it defaults to the double-variant of ToBits()
+ // which gets a 64-bit integer, and FromBits returns 32-bit,
+ // cutting off the wrong half again.
+ // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles).
+ // Still we are only "fixing" this for big endian and leave little endian alone (never touch a running system)
+#ifdef SK_CPU_BENDIAN
+ AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; }
+#else
AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); }
+#endif
AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); }
AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); }
diff -r aecb4600e5da gfx/skia/skia/src/opts/SkBlitMask_opts.h
--- gfx/skia/skia/src/opts/SkBlitMask_opts.h Tue Aug 20 09:46:55 2019 +0200
+++ gfx/skia/skia/src/opts/SkBlitMask_opts.h Mon Sep 09 10:04:06 2019 +0200
@@ -203,7 +203,13 @@
// ~~~>
// a = 1*aa + d(1-1*aa) = aa + d(1-aa)
// c = 0*aa + d(1-1*aa) = d(1-aa)
+
+ // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0
+#ifdef SK_CPU_BENDIAN
+ return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0))
+#else
return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255))
+#endif
+ d.approxMulDiv255(aa.inv());
};
while (h --> 0) {

View file

@ -63,26 +63,27 @@ index 8509aec..eb6f129 100644
EXPORTS += [
diff --git media/ffvpx/libavcodec/moz.build media/ffvpx/libavcodec/moz.build
index 0069865..e806fc8 100644
--- media/ffvpx/libavcodec/moz.build
--- media/ffvpx/libavcodec/moz.build.orig
+++ media/ffvpx/libavcodec/moz.build
@@ -112,9 +112,15 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']:
'vaapi_vp8.c',
'vaapi_vp9.c',
]
+ if CONFIG["MOZ_SYSTEM_AV1"]:
+ CFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
+ OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
+ else:
+ USE_LIBS += [
+ 'dav1d',
+ 'media_libdav1d_asm',
+ ]
USE_LIBS += [
- 'dav1d',
- 'media_libdav1d_asm',
'mozva'
]
@@ -108,10 +108,14 @@
'vp9prob.c',
'vp9recon.c'
]
- USE_LIBS += [
- 'dav1d',
- 'media_libdav1d_asm',
- ]
+ if CONFIG["MOZ_SYSTEM_AV1"]:
+ CFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
+ OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
+ else:
+ USE_LIBS += [
+ 'dav1d',
+ 'media_libdav1d_asm',
+ ]
if CONFIG['MOZ_WAYLAND']:
LOCAL_INCLUDES += ['/media/mozva']
SOURCES += [
diff --git toolkit/moz.configure toolkit/moz.configure
index 0069865..e806fc8 100644
--- toolkit/moz.configure

View file

@ -9,11 +9,10 @@ https://bug1626236.bmoattachments.org/attachment.cgi?id=9137096
# Parent 9cd90914846f667f18babc491a74c164ae5d6e9f
imported patch decoder_workaround.patch
diff --git image/decoders/nsGIFDecoder2.cpp image/decoders/nsGIFDecoder2.cpp
index ebb0b7d..d52ef47 100644
--- image/decoders/nsGIFDecoder2.cpp
+++ image/decoders/nsGIFDecoder2.cpp
@@ -422,6 +422,9 @@ void nsGIFDecoder2::ConvertColormap(uint32_t* aColormap, uint32_t aColors) {
diff -r 9cd90914846f image/decoders/nsGIFDecoder2.cpp
--- image/decoders/nsGIFDecoder2.cpp Thu Feb 27 12:57:14 2020 +0100
+++ image/decoders/nsGIFDecoder2.cpp Fri Mar 27 13:06:18 2020 +0100
@@ -422,6 +422,9 @@
MOZ_ASSERT(mSwizzleFn);
uint8_t* data = reinterpret_cast<uint8_t*>(aColormap);
mSwizzleFn(data, data, aColors);
@ -23,11 +22,10 @@ index ebb0b7d..d52ef47 100644
}
LexerResult nsGIFDecoder2::DoDecode(SourceBufferIterator& aIterator,
diff --git image/decoders/nsJPEGDecoder.cpp image/decoders/nsJPEGDecoder.cpp
index 9ea4403..d82772c 100644
--- image/decoders/nsJPEGDecoder.cpp
+++ image/decoders/nsJPEGDecoder.cpp
@@ -257,6 +257,9 @@ LexerTransition<nsJPEGDecoder::State> nsJPEGDecoder::ReadJPEGData(
diff -r 9cd90914846f image/decoders/nsJPEGDecoder.cpp
--- image/decoders/nsJPEGDecoder.cpp Thu Feb 27 12:57:14 2020 +0100
+++ image/decoders/nsJPEGDecoder.cpp Fri Mar 27 13:06:18 2020 +0100
@@ -263,6 +263,9 @@
case JCS_YCbCr:
// By default, we will output directly to BGRA. If we need to apply
// special color transforms, this may change.
@ -37,7 +35,7 @@ index 9ea4403..d82772c 100644
switch (SurfaceFormat::OS_RGBX) {
case SurfaceFormat::B8G8R8X8:
mInfo.out_color_space = JCS_EXT_BGRX;
@@ -271,6 +274,7 @@ LexerTransition<nsJPEGDecoder::State> nsJPEGDecoder::ReadJPEGData(
@@ -277,6 +280,7 @@
mState = JPEG_ERROR;
return Transition::TerminateFailure();
}
@ -45,11 +43,10 @@ index 9ea4403..d82772c 100644
break;
case JCS_CMYK:
case JCS_YCCK:
diff --git image/decoders/nsPNGDecoder.cpp image/decoders/nsPNGDecoder.cpp
index e3e4ef4..3cc7315 100644
--- image/decoders/nsPNGDecoder.cpp
+++ image/decoders/nsPNGDecoder.cpp
@@ -356,7 +356,7 @@ LexerResult nsPNGDecoder::DoDecode(SourceBufferIterator& aIterator,
diff -r 9cd90914846f image/decoders/nsPNGDecoder.cpp
--- image/decoders/nsPNGDecoder.cpp Thu Feb 27 12:57:14 2020 +0100
+++ image/decoders/nsPNGDecoder.cpp Fri Mar 27 13:06:18 2020 +0100
@@ -361,7 +361,7 @@
IResumable* aOnResume) {
MOZ_ASSERT(!HasError(), "Shouldn't call DoDecode after error!");
@ -58,7 +55,7 @@ index e3e4ef4..3cc7315 100644
[=](State aState, const char* aData, size_t aLength) {
switch (aState) {
case State::PNG_DATA:
@@ -366,6 +366,14 @@ LexerResult nsPNGDecoder::DoDecode(SourceBufferIterator& aIterator,
@@ -371,6 +371,14 @@
}
MOZ_CRASH("Unknown State");
});
@ -73,11 +70,10 @@ index e3e4ef4..3cc7315 100644
}
LexerTransition<nsPNGDecoder::State> nsPNGDecoder::ReadPNGData(
diff --git image/decoders/nsWebPDecoder.cpp image/decoders/nsWebPDecoder.cpp
index e58ca92..2056ebb 100644
--- image/decoders/nsWebPDecoder.cpp
+++ image/decoders/nsWebPDecoder.cpp
@@ -247,7 +247,12 @@ nsresult nsWebPDecoder::CreateFrame(const OrientedIntRect& aFrameRect) {
diff -r 9cd90914846f image/decoders/nsWebPDecoder.cpp
--- image/decoders/nsWebPDecoder.cpp Thu Feb 27 12:57:14 2020 +0100
+++ image/decoders/nsWebPDecoder.cpp Fri Mar 27 13:06:18 2020 +0100
@@ -237,7 +237,12 @@
// WebP doesn't guarantee that the alpha generated matches the hint in the
// header, so we always need to claim the input is BGRA. If the output is
// BGRX, swizzling will mask off the alpha channel.

View file

@ -1,10 +1,10 @@
Don't pass --target when CC/CXX contains clang
diff --git third_party/rust/cc/src/lib.rs third_party/rust/cc/src/lib.rs
index 8cafd2a..f40b746 100644
index 9d133a0..273e520 100644
--- third_party/rust/cc/src/lib.rs
+++ third_party/rust/cc/src/lib.rs
@@ -2796,24 +2796,7 @@ impl Tool {
@@ -2667,24 +2667,7 @@ impl Tool {
}
fn with_features(path: PathBuf, clang_driver: Option<&str>, cuda: bool) -> Self {

View file

@ -1,17 +0,0 @@
Unbreak build with Rust 1.45.0
error: options `-C embed-bitcode=no` and `-C lto` are incompatible
diff --git config/makefiles/rust.mk config/makefiles/rust.mk
index 75570d3..94ec33f 100644
--- config/makefiles/rust.mk
+++ config/makefiles/rust.mk
@@ -97,7 +97,7 @@ ifndef rustflags_sancov
# Never enable when coverage is enabled to work around https://github.com/rust-lang/rust/issues/90045.
ifndef MOZ_CODE_COVERAGE
ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
-cargo_rustc_flags += -Clto
+cargo_rustc_flags +=
endif
# We need -Cembed-bitcode=yes for all crates when using -Clto.
RUSTFLAGS += -Cembed-bitcode=yes

View file

@ -20,16 +20,22 @@ media/libcubeb/src/cubeb_alsa.c:1168:3: note: include the header <stdlib.h> or e
^
2 errors generated.
--- media/libcubeb/src/cubeb_alsa.c.orig 2021-08-31 14:26:24.530548000 +0200
+++ media/libcubeb/src/cubeb_alsa.c 2021-08-31 14:26:43.081470000 +0200
@@ -5,9 +5,7 @@
--- media/libcubeb/src/cubeb_alsa.c.orig 2023-03-29 20:51:00.139281000 +0200
+++ media/libcubeb/src/cubeb_alsa.c 2023-03-29 20:51:46.219013000 +0200
@@ -5,12 +5,16 @@
* accompanying file LICENSE for details.
*/
#undef NDEBUG
-#define _DEFAULT_SOURCE
-#define _BSD_SOURCE
-#define _XOPEN_SOURCE 500
+#define _GNU_SOURCE 1
+#if defined(__FreeBSD__)
+#define _GNU_SOURCE
+#else
#define _DEFAULT_SOURCE
#define _BSD_SOURCE
#if defined(__NetBSD__)
#define _NETBSD_SOURCE /* timersub() */
#endif
#define _XOPEN_SOURCE 500
+#endif
#include "cubeb-internal.h"
#include "cubeb/cubeb.h"
#include <alsa/asoundlib.h>
#include "cubeb_tracing.h"

View file

@ -1,82 +0,0 @@
Revert bug 1647717 to workaround the issue of occational tab crashing when
using any cubeb backends other than pulse-rust to play media. The loss of
such change will be that users will not be able to do profiling on threads
created by libcubeb.
--- dom/media/AudioStream.cpp.orig 2022-04-19 19:43:36.505544000 +0200
+++ dom/media/AudioStream.cpp 2022-04-19 19:47:53.111474000 +0200
@@ -27,7 +27,6 @@
#endif
#include "Tracing.h"
#include "webaudio/blink/DenormalDisabler.h"
-#include "AudioThreadRegistry.h"
#include "mozilla/StaticPrefs_media.h"
// Use abort() instead of exception in SoundTouch.
@@ -144,8 +143,6 @@
mOutChannels(aOutputChannels),
mState(INITIALIZED),
mDataSource(aSource),
- mAudioThreadId(ProfilerThreadId{}),
- mSandboxed(CubebUtils::SandboxEnabled()),
mPlaybackComplete(false),
mPlaybackRate(1.0f),
mPreservesPitch(true) {}
@@ -552,17 +549,6 @@
aWriter.Available());
}
-bool AudioStream::CheckThreadIdChanged() {
- ProfilerThreadId id = profiler_current_thread_id();
- if (id != mAudioThreadId) {
- mAudioThreadId = id;
- mAudioThreadChanged = true;
- return true;
- }
- mAudioThreadChanged = false;
- return false;
-}
-
void AudioStream::AssertIsOnAudioThread() const {
// This can be called right after CheckThreadIdChanged, because the audio
// thread can change when not sandboxed.
@@ -591,9 +577,6 @@
}
long AudioStream::DataCallback(void* aBuffer, long aFrames) {
- if (CheckThreadIdChanged() && !mSandboxed) {
- CubebUtils::GetAudioThreadRegistry()->Register(mAudioThreadId);
- }
WebCore::DenormalDisabler disabler;
TRACE_AUDIO_CALLBACK_BUDGET(aFrames, mAudioClock.GetInputRate());
@@ -648,9 +631,6 @@
mDumpFile.Write(static_cast<const AudioDataValue*>(aBuffer),
aFrames * mOutChannels);
- if (!mSandboxed && writer.Available() != 0) {
- CubebUtils::GetAudioThreadRegistry()->Unregister(mAudioThreadId);
- }
return aFrames - writer.Available();
}
--- dom/media/AudioStream.h.orig 2022-04-19 19:43:45.457171000 +0200
+++ dom/media/AudioStream.h 2022-04-19 19:45:30.463633000 +0200
@@ -329,7 +329,6 @@
template <typename Function, typename... Args>
int InvokeCubeb(Function aFunction, Args&&... aArgs) REQUIRES(mMonitor);
- bool CheckThreadIdChanged();
void AssertIsOnAudioThread() const;
soundtouch::SoundTouch* mTimeStretcher;
@@ -368,9 +367,6 @@
// the default device is used. It is set
// during the Init() in decoder thread.
RefPtr<AudioDeviceInfo> mSinkInfo;
- // Contains the id of the audio thread, from profiler_get_thread_id.
- std::atomic<ProfilerThreadId> mAudioThreadId;
- const bool mSandboxed = false;
MozPromiseHolder<MediaSink::EndedPromise> mEndedPromise GUARDED_BY(mMonitor);
std::atomic<bool> mPlaybackComplete;

View file

@ -1,93 +0,0 @@
--- modules/fdlibm/src/math_private.h.orig 2021-09-30 19:32:33.764224000 +0200
+++ modules/fdlibm/src/math_private.h 2021-10-02 22:15:33.265122000 +0200
@@ -30,7 +30,11 @@
* Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
*/
-typedef double __double_t;
+#ifdef __LP64__
+typedef double __double_t;
+#else
+typedef long double __double_t;
+#endif
typedef __double_t double_t;
/*
@@ -630,7 +634,37 @@
return ((double)(x + 0x1.8p52) - 0x1.8p52);
}
+static inline float
+rnintf(__float_t x)
+{
+ /*
+ * As for rnint(), except we could just call that to handle the
+ * extra precision case, usually without losing efficiency.
+ */
+ return ((float)(x + 0x1.8p23F) - 0x1.8p23F);
+}
+
+#ifdef LDBL_MANT_DIG
/*
+ * The complications for extra precision are smaller for rnintl() since it
+ * can safely assume that the rounding precision has been increased from
+ * its default to FP_PE on x86. We don't exploit that here to get small
+ * optimizations from limiting the rangle to double. We just need it for
+ * the magic number to work with long doubles. ld128 callers should use
+ * rnint() instead of this if possible. ld80 callers should prefer
+ * rnintl() since for amd64 this avoids swapping the register set, while
+ * for i386 it makes no difference (assuming FP_PE), and for other arches
+ * it makes little difference.
+ */
+static inline long double
+rnintl(long double x)
+{
+ return (x + __CONCAT(0x1.8p, LDBL_MANT_DIG) / 2 -
+ __CONCAT(0x1.8p, LDBL_MANT_DIG) / 2);
+}
+#endif /* LDBL_MANT_DIG */
+
+/*
* irint() and i64rint() give the same result as casting to their integer
* return type provided their arg is a floating point integer. They can
* sometimes be more efficient because no rounding is required.
@@ -644,6 +678,39 @@
sizeof(x) == sizeof(long double) ? irintl(x) : (int)(x))
#else
#define irint(x) ((int)(x))
+#endif
+
+#define i64rint(x) ((int64_t)(x)) /* only needed for ld128 so not opt. */
+
+#if defined(__i386__) && defined(__GNUCLIKE_ASM)
+static __inline int
+irintf(float x)
+{
+ int n;
+
+ __asm("fistl %0" : "=m" (n) : "t" (x));
+ return (n);
+}
+
+static __inline int
+irintd(double x)
+{
+ int n;
+
+ __asm("fistl %0" : "=m" (n) : "t" (x));
+ return (n);
+}
+#endif
+
+#if (defined(__amd64__) || defined(__i386__)) && defined(__GNUCLIKE_ASM)
+static __inline int
+irintl(long double x)
+{
+ int n;
+
+ __asm("fistl %0" : "=m" (n) : "t" (x));
+ return (n);
+}
#endif
#ifdef DEBUG

View file

@ -97,13 +97,9 @@ index b91d9c1..a97e6eb 100755
echo If gfx/graphite2/src/files.mk has changed, please make corresponding
diff --git gfx/harfbuzz/README-mozilla gfx/harfbuzz/README-mozilla
index 3180257..4587a3b 100644
--- gfx/harfbuzz/README-mozilla
+++ gfx/harfbuzz/README-mozilla
@@ -21,3 +21,8 @@ from within the gfx/harfbuzz directory.
If the collection of source files changes, manual updates to moz.build may be
needed as we don't use the upstream makefiles.
+
--- /dev/null
+++ gfx/harfbuzz/README-mozilla.fbsd
@@ -0,0 +1,4 @@
+The in-tree copy may be omitted during build by --with-system-harfbuzz.
+Make sure to keep pkg-config version check within toolkit/moz.configure in sync
+with checkout version or increment latest tag by one if it's not based

View file

@ -0,0 +1,11 @@
--- gfx/skia/skia/src/base/SkEndian.h.orig 2023-06-16 01:32:16.999830000 +0200
+++ gfx/skia/skia/src/base/SkEndian.h 2023-06-16 01:32:41.701673000 +0200
@@ -131,7 +131,7 @@
#define SkTEndian_SwapLE64(n) (n)
#else // SK_CPU_BENDIAN
#define SkEndian_SwapBE16(n) (n)
- #define SkEndian_SwapBE32(n) (n)
+ #define SkEndian_SwapBE32(n) uint32_t(n)
#define SkEndian_SwapBE64(n) (n)
#define SkEndian_SwapLE16(n) SkEndianSwap16(n)
#define SkEndian_SwapLE32(n) SkEndianSwap32(n)

View file

@ -0,0 +1,11 @@
--- gfx/skia/skia/src/core/SkRasterPipeline.h.orig 2023-06-10 14:20:18.155477000 +0200
+++ gfx/skia/skia/src/core/SkRasterPipeline.h 2023-06-10 14:20:30.760915000 +0200
@@ -24,7 +24,7 @@
struct SkImageInfo;
struct skcms_TransferFunction;
-#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32)
+#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && !defined(__powerpc__)
#define SK_HAS_MUSTTAIL 1
#else
#define SK_HAS_MUSTTAIL 0

View file

@ -0,0 +1,15 @@
# On FreeBSD/i386's LLVM, actual alignment for atomic types requires
# stricter alignment rules, mostly on 8 byte boundaries instead of 4 byte
# as indicated by max_align_t.
--- ./toolkit/components/protobuf/src/google/protobuf/arena_impl.h.orig 2022-08-20 20:07:57.096818000 +0200
+++ ./toolkit/components/protobuf/src/google/protobuf/arena_impl.h 2022-08-20 21:40:47.821690000 +0200
@@ -640,7 +640,7 @@
#ifdef _MSC_VER
#pragma warning(disable : 4324)
#endif
- struct alignas(kCacheAlignment) CacheAlignedLifecycleIdGenerator {
+ struct alignas(alignof(std::atomic<LifecycleIdAtomic>)) CacheAlignedLifecycleIdGenerator {
std::atomic<LifecycleIdAtomic> id;
};
static CacheAlignedLifecycleIdGenerator lifecycle_id_generator_;

View file

@ -0,0 +1,35 @@
commit 57b30241311091b5a6a5a0bb1c19a8e073860fc3
Author: Christoph Moench-Tegeder <cmt@burggraben.net>
do not assert on alignment when not having the bits
the underlying issue seemed to be win-only anyways?
diff --git js/public/Utility.h js/public/Utility.h
index 0d745e9df785..f0ca7ea37162 100644
--- js/public/Utility.h
+++ js/public/Utility.h
@@ -480,6 +480,7 @@ static inline void js_free(void* p) {
* Note: Do not add a ; at the end of a use of JS_DECLARE_NEW_METHODS,
* or the build will break.
*/
+#if !defined(__i386__)
#define JS_DECLARE_NEW_METHODS(NEWNAME, ALLOCATOR, QUALIFIERS) \
template <class T, typename... Args> \
QUALIFIERS T* MOZ_HEAP_ALLOCATOR NEWNAME(Args&&... args) { \
@@ -490,6 +491,15 @@ static inline void js_free(void* p) {
return MOZ_LIKELY(memory) ? new (memory) T(std::forward<Args>(args)...) \
: nullptr; \
}
+#else
+#define JS_DECLARE_NEW_METHODS(NEWNAME, ALLOCATOR, QUALIFIERS) \
+ template <class T, typename... Args> \
+ QUALIFIERS T* MOZ_HEAP_ALLOCATOR NEWNAME(Args&&... args) { \
+ void* memory = ALLOCATOR(sizeof(T)); \
+ return MOZ_LIKELY(memory) ? new (memory) T(std::forward<Args>(args)...) \
+ : nullptr; \
+ }
+#endif
/*
* Given a class which should provide a 'new' method that takes an arena as

View file

@ -1,159 +0,0 @@
# Below are the changes needed for generate-gn-build-files.sh
# except for depot_tools
# https://bugzilla.mozilla.org/show_bug.cgi?id=1654448
diff --git dom/media/webrtc/third_party_build/gn-configs/arm64_False_arm64_freebsd.mozconfig dom/media/webrtc/third_party_build/gn-configs/arm64_False_arm64_freebsd.mozconfig
new file mode 100644
index 0000000000..7c76576969
--- /dev/null
+++ dom/media/webrtc/third_party_build/gn-configs/arm64_False_arm64_freebsd.mozconfig
@@ -0,0 +1,12 @@
+export M4=/usr/local/bin/gm4
+export CC=/usr/local/bin/clang13
+export CXX=/usr/local/bin/clang++13
+export CPP=/usr/local/bin/clang-cpp13
+ac_add_options --prefix="/usr/local"
+ac_add_options --with-libclang-path="/usr/local/llvm13/lib"
+ac_add_options --with-wasi-sysroot="/usr/local/share/wasi-sysroot"
+
+ac_add_options --target=aarch64
+ac_add_options --enable-bootstrap
+
+mk_add_options MOZ_OBJDIR=obj-arm64_False_arm64_freebsd
diff --git dom/media/webrtc/third_party_build/gn-configs/arm64_True_arm64_freebsd.mozconfig dom/media/webrtc/third_party_build/gn-configs/arm64_True_arm64_freebsd.mozconfig
new file mode 100644
index 0000000000..d056686355
--- /dev/null
+++ dom/media/webrtc/third_party_build/gn-configs/arm64_True_arm64_freebsd.mozconfig
@@ -0,0 +1,13 @@
+export M4=/usr/local/bin/gm4
+export CC=/usr/local/bin/clang13
+export CXX=/usr/local/bin/clang++13
+export CPP=/usr/local/bin/clang-cpp13
+ac_add_options --prefix="/usr/local"
+ac_add_options --with-libclang-path="/usr/local/llvm13/lib"
+ac_add_options --with-wasi-sysroot="/usr/local/share/wasi-sysroot"
+
+ac_add_options --target=aarch64
+ac_add_options --enable-debug
+ac_add_options --enable-bootstrap
+
+mk_add_options MOZ_OBJDIR=obj-arm64_True_arm64_freebsd
diff --git dom/media/webrtc/third_party_build/gn-configs/x64_False_x64_freebsd.mozconfig dom/media/webrtc/third_party_build/gn-configs/x64_False_x64_freebsd.mozconfig
new file mode 100644
index 0000000000..37319939ba
--- /dev/null
+++ dom/media/webrtc/third_party_build/gn-configs/x64_False_x64_freebsd.mozconfig
@@ -0,0 +1,11 @@
+export M4=/usr/local/bin/gm4
+export CC=/usr/local/bin/clang13
+export CXX=/usr/local/bin/clang++13
+export CPP=/usr/local/bin/clang-cpp13
+ac_add_options --prefix="/usr/local"
+ac_add_options --with-libclang-path="/usr/local/llvm13/lib"
+ac_add_options --with-wasi-sysroot="/usr/local/share/wasi-sysroot"
+
+ac_add_options --enable-bootstrap
+
+mk_add_options MOZ_OBJDIR=obj-x64_False_x64_freebsd
diff --git dom/media/webrtc/third_party_build/gn-configs/x64_False_x86_freebsd.mozconfig dom/media/webrtc/third_party_build/gn-configs/x64_False_x86_freebsd.mozconfig
new file mode 100644
index 0000000000..4bcac5d797
--- /dev/null
+++ dom/media/webrtc/third_party_build/gn-configs/x64_False_x86_freebsd.mozconfig
@@ -0,0 +1,12 @@
+export M4=/usr/local/bin/gm4
+export CC=/usr/local/bin/clang13
+export CXX=/usr/local/bin/clang++13
+export CPP=/usr/local/bin/clang-cpp13
+ac_add_options --prefix="/usr/local"
+ac_add_options --with-libclang-path="/usr/local/llvm13/lib"
+ac_add_options --with-wasi-sysroot="/usr/local/share/wasi-sysroot"
+
+ac_add_options --target=i686
+ac_add_options --enable-bootstrap
+
+mk_add_options MOZ_OBJDIR=obj-x64_False_x86_freebsd
diff --git dom/media/webrtc/third_party_build/gn-configs/x64_True_x64_freebsd.mozconfig dom/media/webrtc/third_party_build/gn-configs/x64_True_x64_freebsd.mozconfig
new file mode 100644
index 0000000000..7c5ae25d67
--- /dev/null
+++ dom/media/webrtc/third_party_build/gn-configs/x64_True_x64_freebsd.mozconfig
@@ -0,0 +1,12 @@
+export M4=/usr/local/bin/gm4
+export CC=/usr/local/bin/clang13
+export CXX=/usr/local/bin/clang++13
+export CPP=/usr/local/bin/clang-cpp13
+ac_add_options --prefix="/usr/local"
+ac_add_options --with-libclang-path="/usr/local/llvm13/lib"
+ac_add_options --with-wasi-sysroot="/usr/local/share/wasi-sysroot"
+
+ac_add_options --enable-debug
+ac_add_options --enable-bootstrap
+
+mk_add_options MOZ_OBJDIR=obj-x64_True_x64_freebsd
diff --git dom/media/webrtc/third_party_build/gn-configs/x64_True_x86_freebsd.mozconfig dom/media/webrtc/third_party_build/gn-configs/x64_True_x86_freebsd.mozconfig
new file mode 100644
index 0000000000..ee95c64a23
--- /dev/null
+++ dom/media/webrtc/third_party_build/gn-configs/x64_True_x86_freebsd.mozconfig
@@ -0,0 +1,13 @@
+export M4=/usr/local/bin/gm4
+export CC=/usr/local/bin/clang13
+export CXX=/usr/local/bin/clang++13
+export CPP=/usr/local/bin/clang-cpp13
+ac_add_options --prefix="/usr/local"
+ac_add_options --with-libclang-path="/usr/local/llvm13/lib"
+ac_add_options --with-wasi-sysroot="/usr/local/share/wasi-sysroot"
+
+ac_add_options --target=i686
+ac_add_options --enable-debug
+ac_add_options --enable-bootstrap
+
+mk_add_options MOZ_OBJDIR=obj-x64_True_x86_freebsd
diff --git third_party/libwebrtc/build/config/BUILDCONFIG.gn third_party/libwebrtc/build/config/BUILDCONFIG.gn
index fe6f5b7d2a..1092f99c65 100644
--- third_party/libwebrtc/build/config/BUILDCONFIG.gn
+++ third_party/libwebrtc/build/config/BUILDCONFIG.gn
@@ -131,10 +131,12 @@ declare_args() {
is_official_build = false
# Whether we're a traditional desktop unix.
- is_desktop_linux = current_os == "linux" || current_os == "openbsd"
+ is_desktop_linux = current_os == "linux" || current_os == "openbsd" ||
+ current_os == "freebsd"
# Set to true when compiling with the Clang compiler.
is_clang = current_os != "linux" || current_os == "openbsd" ||
+ current_os == "freebsd" ||
(current_cpu != "s390x" && current_cpu != "s390" &&
current_cpu != "ppc64" && current_cpu != "ppc" &&
current_cpu != "mips" && current_cpu != "mips64")
@@ -186,7 +188,7 @@ if (host_toolchain == "") {
# TODO(dpranke): Add some sort of assert here that verifies that
# no toolchain omitted host_toolchain from its toolchain_args().
- if (host_os == "linux" || host_os == "openbsd") {
+ if (host_os == "linux" || host_os == "openbsd" || host_os == "freebsd" ) {
if (target_os != "linux") {
host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
} else if (is_clang) {
@@ -224,7 +226,8 @@ if (target_os == "android") {
assert(host_os == "linux" || host_os == "mac",
"Android builds are only supported on Linux and Mac hosts.")
_default_toolchain = "//build/toolchain/android:android_clang_$target_cpu"
-} else if (target_os == "chromeos" || target_os == "linux" || target_os == "openbsd") {
+} else if (target_os == "chromeos" || target_os == "linux" ||
+ target_os == "openbsd" || target_os == "freebsd") {
# See comments in build/toolchain/cros/BUILD.gn about board compiles.
if (is_clang) {
_default_toolchain = "//build/toolchain/linux:clang_$target_cpu"
@@ -289,7 +292,7 @@ is_chromeos = current_os == "chromeos"
is_fuchsia = current_os == "fuchsia"
is_ios = current_os == "ios"
is_linux = current_os == "chromeos" || current_os == "linux"
-is_bsd = current_os == "openbsd"
+is_bsd = current_os == "openbsd" || current_os == "freebsd"
is_mac = current_os == "mac"
is_nacl = current_os == "nacl"
is_win = current_os == "win" || current_os == "winuwp"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,264 @@
From ebc07ec32002c53702eb6e53ee1532ad2e0dc2bd Mon Sep 17 00:00:00 2001
From: Marcus Comstedt <marcus@mc.pp.se>
Date: Fri, 12 Mar 2021 23:27:16 +0100
Subject: [PATCH 1/2] wav: Swap header fields as needed
---
third_party/webrtc/common_audio/wav_header.cc | 48 +++++++++++++++++--
1 file changed, 44 insertions(+), 4 deletions(-)
--- third_party/libwebrtc/common_audio/wav_header.cc
+++ third_party/libwebrtc/common_audio/wav_header.cc
@@ -26,10 +26,6 @@
namespace webrtc {
namespace {
-#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
-#error "Code not working properly for big endian platforms."
-#endif
-
#pragma pack(2)
struct ChunkHeader {
uint32_t ID;
@@ -111,9 +107,15 @@ static_assert(sizeof(WavHeaderIeeeFloat) == kIeeeFloatWavHeaderSize,
"no padding in header");
uint32_t PackFourCC(char a, char b, char c, char d) {
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ uint32_t packed_value =
+ static_cast<uint32_t>(a) << 24 | static_cast<uint32_t>(b) << 16 |
+ static_cast<uint32_t>(c) << 8 | static_cast<uint32_t>(d);
+#else
uint32_t packed_value =
static_cast<uint32_t>(a) | static_cast<uint32_t>(b) << 8 |
static_cast<uint32_t>(c) << 16 | static_cast<uint32_t>(d) << 24;
+#endif
return packed_value;
}
@@ -172,6 +174,9 @@ bool FindWaveChunk(ChunkHeader* chunk_header,
if (readable->Read(chunk_header, sizeof(*chunk_header)) !=
sizeof(*chunk_header))
return false; // EOF.
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ chunk_header->Size = __builtin_bswap32(chunk_header->Size);
+#endif
if (ReadFourCC(chunk_header->ID) == sought_chunk_id)
return true; // Sought chunk found.
// Ignore current chunk by skipping its payload.
@@ -185,6 +190,14 @@ bool ReadFmtChunkData(FmtPcmSubchunk* fmt_subchunk, WavHeaderReader* readable) {
if (readable->Read(&(fmt_subchunk->AudioFormat), kFmtPcmSubchunkSize) !=
kFmtPcmSubchunkSize)
return false;
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ fmt_subchunk->AudioFormat = __builtin_bswap16(fmt_subchunk->AudioFormat);
+ fmt_subchunk->NumChannels = __builtin_bswap16(fmt_subchunk->NumChannels);
+ fmt_subchunk->SampleRate = __builtin_bswap32(fmt_subchunk->SampleRate);
+ fmt_subchunk->ByteRate = __builtin_bswap32(fmt_subchunk->ByteRate);
+ fmt_subchunk->BlockAlign = __builtin_bswap16(fmt_subchunk->BlockAlign);
+ fmt_subchunk->BitsPerSample = __builtin_bswap16(fmt_subchunk->BitsPerSample);
+#endif
const uint32_t fmt_size = fmt_subchunk->header.Size;
if (fmt_size != kFmtPcmSubchunkSize) {
// There is an optional two-byte extension field permitted to be present
@@ -225,6 +238,17 @@ void WritePcmWavHeader(size_t num_channels,
header.fmt.BitsPerSample = static_cast<uint16_t>(8 * bytes_per_sample);
header.data.header.ID = PackFourCC('d', 'a', 't', 'a');
header.data.header.Size = static_cast<uint32_t>(bytes_in_payload);
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ header.riff.header.Size = __builtin_bswap32(header.riff.header.Size);
+ header.fmt.header.Size = __builtin_bswap32(header.fmt.header.Size);
+ header.fmt.AudioFormat = __builtin_bswap16(header.fmt.AudioFormat);
+ header.fmt.NumChannels = __builtin_bswap16(header.fmt.NumChannels);
+ header.fmt.SampleRate = __builtin_bswap32(header.fmt.SampleRate);
+ header.fmt.ByteRate = __builtin_bswap32(header.fmt.ByteRate);
+ header.fmt.BlockAlign = __builtin_bswap16(header.fmt.BlockAlign);
+ header.fmt.BitsPerSample = __builtin_bswap16(header.fmt.BitsPerSample);
+ header.data.header.Size = __builtin_bswap32(header.data.header.Size);
+#endif
// Do an extra copy rather than writing everything to buf directly, since buf
// might not be correctly aligned.
@@ -261,6 +285,19 @@ void WriteIeeeFloatWavHeader(size_t num_channels,
header.fact.SampleLength = static_cast<uint32_t>(num_channels * num_samples);
header.data.header.ID = PackFourCC('d', 'a', 't', 'a');
header.data.header.Size = static_cast<uint32_t>(bytes_in_payload);
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ header.riff.header.Size = __builtin_bswap32(header.riff.header.Size);
+ header.fmt.header.Size = __builtin_bswap32(header.fmt.header.Size);
+ header.fmt.AudioFormat = __builtin_bswap16(header.fmt.AudioFormat);
+ header.fmt.NumChannels = __builtin_bswap16(header.fmt.NumChannels);
+ header.fmt.SampleRate = __builtin_bswap32(header.fmt.SampleRate);
+ header.fmt.ByteRate = __builtin_bswap32(header.fmt.ByteRate);
+ header.fmt.BlockAlign = __builtin_bswap16(header.fmt.BlockAlign);
+ header.fmt.BitsPerSample = __builtin_bswap16(header.fmt.BitsPerSample);
+ header.fact.header.Size = __builtin_bswap32(header.fact.header.Size);
+ header.fact.SampleLength = __builtin_bswap32(header.fact.SampleLength);
+ header.data.header.Size = __builtin_bswap32(header.data.header.Size);
+#endif
// Do an extra copy rather than writing everything to buf directly, since buf
// might not be correctly aligned.
@@ -387,6 +424,9 @@ bool ReadWavHeader(WavHeaderReader* readable,
return false;
if (ReadFourCC(header.riff.Format) != "WAVE")
return false;
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ header.riff.header.Size = __builtin_bswap32(header.riff.header.Size);
+#endif
// Find "fmt " and "data" chunks. While the official Wave file specification
// does not put requirements on the chunks order, it is uncommon to find the
--
2.26.3
From 28adaefe12a045a4adf7fdf56eb4e57db46dbe5e Mon Sep 17 00:00:00 2001
From: Marcus Comstedt <marcus@mc.pp.se>
Date: Fri, 12 Mar 2021 23:28:25 +0100
Subject: [PATCH 2/2] wav: Implement sample swapping
---
third_party/webrtc/common_audio/wav_file.cc | 50 ++++++++++++++-------
1 file changed, 34 insertions(+), 16 deletions(-)
--- third_party/libwebrtc/common_audio/wav_file.cc
+++ third_party/libwebrtc/common_audio/wav_file.cc
@@ -89,10 +89,6 @@ void WavReader::Reset() {
size_t WavReader::ReadSamples(const size_t num_samples,
int16_t* const samples) {
-#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
-#error "Need to convert samples to big-endian when reading from WAV file"
-#endif
-
size_t num_samples_left_to_read = num_samples;
size_t next_chunk_start = 0;
while (num_samples_left_to_read > 0 && num_unread_samples_ > 0) {
@@ -107,6 +103,9 @@ size_t WavReader::ReadSamples(const size_t num_samples,
num_samples_read = num_bytes_read / sizeof(samples_to_convert[0]);
for (size_t j = 0; j < num_samples_read; ++j) {
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ *(uint32_t*)&samples_to_convert[j] = __builtin_bswap32(*(uint32_t*)&samples_to_convert[j]);
+#endif
samples[next_chunk_start + j] = FloatToS16(samples_to_convert[j]);
}
} else {
@@ -114,6 +113,11 @@ size_t WavReader::ReadSamples(const size_t num_samples,
num_bytes_read = file_.Read(&samples[next_chunk_start],
chunk_size * sizeof(samples[0]));
num_samples_read = num_bytes_read / sizeof(samples[0]);
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ for (size_t j = 0; j < num_samples_read; ++j) {
+ samples[next_chunk_start + j] = __builtin_bswap16(samples[next_chunk_start + j]);
+ }
+#endif
}
RTC_CHECK(num_samples_read == 0 || (num_bytes_read % num_samples_read) == 0)
<< "Corrupt file: file ended in the middle of a sample.";
@@ -129,10 +133,6 @@ size_t WavReader::ReadSamples(const size_t num_samples,
}
size_t WavReader::ReadSamples(const size_t num_samples, float* const samples) {
-#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
-#error "Need to convert samples to big-endian when reading from WAV file"
-#endif
-
size_t num_samples_left_to_read = num_samples;
size_t next_chunk_start = 0;
while (num_samples_left_to_read > 0 && num_unread_samples_ > 0) {
@@ -147,8 +147,13 @@ size_t WavReader::ReadSamples(const size_t num_samples, float* const samples) {
num_samples_read = num_bytes_read / sizeof(samples_to_convert[0]);
for (size_t j = 0; j < num_samples_read; ++j) {
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ samples[next_chunk_start + j] =
+ static_cast<float>(static_cast<int16_t>(__builtin_bswap16(samples_to_convert[j])));
+#else
samples[next_chunk_start + j] =
static_cast<float>(samples_to_convert[j]);
+#endif
}
} else {
RTC_CHECK_EQ(format_, WavFormat::kWavFormatIeeeFloat);
@@ -157,6 +162,9 @@ size_t WavReader::ReadSamples(const size_t num_samples, float* const samples) {
num_samples_read = num_bytes_read / sizeof(samples[0]);
for (size_t j = 0; j < num_samples_read; ++j) {
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ *(uint32_t*)&samples[next_chunk_start + j] = __builtin_bswap32(*(uint32_t*)&samples[next_chunk_start + j]);
+#endif
samples[next_chunk_start + j] =
FloatToFloatS16(samples[next_chunk_start + j]);
}
@@ -213,23 +221,31 @@ WavWriter::WavWriter(FileWrapper file,
}
void WavWriter::WriteSamples(const int16_t* samples, size_t num_samples) {
-#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
-#error "Need to convert samples to little-endian when writing to WAV file"
-#endif
-
for (size_t i = 0; i < num_samples; i += kMaxChunksize) {
const size_t num_remaining_samples = num_samples - i;
const size_t num_samples_to_write =
std::min(kMaxChunksize, num_remaining_samples);
if (format_ == WavFormat::kWavFormatPcm) {
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ std::array<int16_t, kMaxChunksize> converted_samples;
+ for (size_t j = 0; j < num_samples_to_write; ++j) {
+ converted_samples[j] = __builtin_bswap16(samples[i + j]);
+ }
+ RTC_CHECK(
+ file_.Write(converted_samples.data(), num_samples_to_write * sizeof(samples[0])));
+#else
RTC_CHECK(
file_.Write(&samples[i], num_samples_to_write * sizeof(samples[0])));
+#endif
} else {
RTC_CHECK_EQ(format_, WavFormat::kWavFormatIeeeFloat);
std::array<float, kMaxChunksize> converted_samples;
for (size_t j = 0; j < num_samples_to_write; ++j) {
converted_samples[j] = S16ToFloat(samples[i + j]);
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ *(uint32_t*)&converted_samples[j] = __builtin_bswap32(*(uint32_t*)&converted_samples[j]);
+#endif
}
RTC_CHECK(
file_.Write(converted_samples.data(),
@@ -243,10 +259,6 @@ void WavWriter::WriteSamples(const int16_t* samples, size_t num_samples) {
}
void WavWriter::WriteSamples(const float* samples, size_t num_samples) {
-#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
-#error "Need to convert samples to little-endian when writing to WAV file"
-#endif
-
for (size_t i = 0; i < num_samples; i += kMaxChunksize) {
const size_t num_remaining_samples = num_samples - i;
const size_t num_samples_to_write =
@@ -256,6 +268,9 @@ void WavWriter::WriteSamples(const float* samples, size_t num_samples) {
std::array<int16_t, kMaxChunksize> converted_samples;
for (size_t j = 0; j < num_samples_to_write; ++j) {
converted_samples[j] = FloatS16ToS16(samples[i + j]);
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ converted_samples[j] = __builtin_bswap16(converted_samples[j]);
+#endif
}
RTC_CHECK(
file_.Write(converted_samples.data(),
@@ -265,6 +280,9 @@ void WavWriter::WriteSamples(const float* samples, size_t num_samples) {
std::array<float, kMaxChunksize> converted_samples;
for (size_t j = 0; j < num_samples_to_write; ++j) {
converted_samples[j] = FloatS16ToFloat(samples[i + j]);
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ *(uint32_t*)&converted_samples[j] = __builtin_bswap32(*(uint32_t*)&converted_samples[j]);
+#endif
}
RTC_CHECK(
file_.Write(converted_samples.data(),
--
2.26.3

View file

@ -1,4 +1,4 @@
--- memory/mozalloc/throw_gcc.h.orig 2022-02-02 17:33:38 UTC
--- memory/mozalloc/throw_gcc.h.orig 2022-03-05 00:14:41 UTC
+++ memory/mozalloc/throw_gcc.h
@@ -74,50 +74,66 @@ __throw_bad_function_call(void) {
mozalloc_abort("fatal: STL threw bad_function_call");

View file

@ -0,0 +1,27 @@
commit 7a20fbf537ee0867244109d1ea48a8ad9de2e4ea
Author: Christoph Moench-Tegeder <cmt@burggraben.net>
align typedefs with our libm for historical CPUs
diff --git modules/fdlibm/src/math_private.h modules/fdlibm/src/math_private.h
index f4373f27834a..3b898241660f 100644
--- modules/fdlibm/src/math_private.h
+++ modules/fdlibm/src/math_private.h
@@ -30,9 +30,17 @@
* Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
*/
+#ifdef __LP64__
typedef double __double_t;
+#else
+typedef long double __double_t;
+#endif
typedef __double_t double_t;
+#ifdef __LP64__
typedef float __float_t;
+#else
+typedef long double __float_t;
+#endif
/*
* The original fdlibm code used statements like:

View file

@ -1,35 +1,48 @@
Chase ABI from multimedia/pipewire/files/patch-src_pipewire_pipewire_init
Chase ABI from multimedia/pipewire/files/patch-src_pipewire_pipewire_init
Ref: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1819
https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1819
diff --git third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
index 2fd3b1a575..79a14d7d7e 100644
--- third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
+++ third_party/libwebrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
@@ -279,7 +279,7 @@ void BaseCapturerPipeWire::InitPipeWire() {
}
#endif // defined(WEBRTC_DLOPEN_PIPEWIRE)
diff --git third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
index 49b64845100b..283c387db770 100644
--- third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
+++ third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
@@ -402,7 +402,7 @@ bool SharedScreenCastStreamPrivate::StartScreenCastStream(
pw_stream_node_id_ = stream_node_id;
- pw_init(/*argc=*/nullptr, /*argc=*/nullptr);
+ pipewire_init(/*argc=*/nullptr, /*argc=*/nullptr);
pw_main_loop_ = pw_thread_loop_new("pipewire-main-loop", nullptr);
pw_context_ = pw_context_new(pw_thread_loop_get_loop(pw_main_loop_), nullptr, 0);
diff --git third_party/libwebrtc/modules/desktop_capture/linux/pipewire.sigs third_party/libwebrtc/modules/desktop_capture/linux/pipewire.sigs
index 3e21e9dc07..f561dcf619 100644
--- third_party/libwebrtc/modules/desktop_capture/linux/pipewire.sigs
+++ third_party/libwebrtc/modules/desktop_capture/linux/pipewire.sigs
@@ -16,7 +16,7 @@ void pw_loop_destroy(pw_loop *loop);
pw_loop * pw_loop_new(pw_properties *properties);
diff --git third_party/libwebrtc/modules/desktop_capture/linux/wayland/test/test_screencast_stream_provider.cc third_party/libwebrtc/modules/desktop_capture/linux/wayland/test/test_screencast_stream_provider.cc
index 3b829959aca8..9bdcdf1ffd51 100644
--- third_party/libwebrtc/modules/desktop_capture/linux/wayland/test/test_screencast_stream_provider.cc
+++ third_party/libwebrtc/modules/desktop_capture/linux/wayland/test/test_screencast_stream_provider.cc
@@ -36,7 +36,7 @@ TestScreenCastStreamProvider::TestScreenCastStreamProvider(Observer* observer,
return;
}
- pw_init(/*argc=*/nullptr, /*argc=*/nullptr);
+ pipewire_init(/*argc=*/nullptr, /*argc=*/nullptr);
pw_main_loop_ = pw_thread_loop_new("pipewire-test-main-loop", nullptr);
diff --git third_party/libwebrtc/modules/portal/pipewire.sigs third_party/libwebrtc/modules/portal/pipewire.sigs
index 139a8c37a551..9fe131d8daa6 100644
--- third_party/libwebrtc/modules/portal/pipewire.sigs
+++ third_party/libwebrtc/modules/portal/pipewire.sigs
@@ -15,7 +15,7 @@ pw_loop * pw_loop_new(const spa_dict *props);
// pipewire.h
-void pw_init(int *argc, char **argv[]);
+void pipewire_init(int *argc, char **argv[]);
const char* pw_get_library_version();
// properties.h
pw_properties * pw_properties_new_string(const char *args);
diff --git third_party/pipewire/libpipewire/mozpipewire.cpp third_party/pipewire/libpipewire/mozpipewire.cpp
index 1ecfc3196a..6f44b35964 100644
index fbeeb8e5a760..46f768790946 100644
--- third_party/pipewire/libpipewire/mozpipewire.cpp
+++ third_party/pipewire/libpipewire/mozpipewire.cpp
@@ -58,7 +58,7 @@ struct pw_context * (*pw_context_new_fn)(struct pw_loop *main_loop,
@ -41,7 +54,7 @@ index 1ecfc3196a..6f44b35964 100644
static void (*pw_stream_add_listener_fn)(struct pw_stream *stream,
struct spa_hook *listener,
const struct pw_stream_events *events,
@@ -96,7 +96,7 @@ bool IsPwLibraryLoaded() {
@@ -101,7 +101,7 @@ bool IsPwLibraryLoaded() {
IS_FUNC_LOADED(pw_context_destroy_fn) &&
IS_FUNC_LOADED(pw_context_new_fn) &&
IS_FUNC_LOADED(pw_core_disconnect_fn) &&
@ -49,8 +62,8 @@ index 1ecfc3196a..6f44b35964 100644
+ IS_FUNC_LOADED(pipewire_init_fn) &&
IS_FUNC_LOADED(pw_stream_add_listener_fn) &&
IS_FUNC_LOADED(pw_stream_connect_fn) &&
IS_FUNC_LOADED(pw_stream_dequeue_buffer_fn) &&
@@ -133,7 +133,7 @@ bool LoadPWLibrary() {
IS_FUNC_LOADED(pw_stream_disconnect_fn) &&
@@ -142,7 +142,7 @@ bool LoadPWLibrary() {
GET_FUNC(pw_context_destroy, pwLib);
GET_FUNC(pw_context_new, pwLib);
GET_FUNC(pw_core_disconnect, pwLib);
@ -58,8 +71,8 @@ index 1ecfc3196a..6f44b35964 100644
+ GET_FUNC(pipewire_init, pwLib);
GET_FUNC(pw_stream_add_listener, pwLib);
GET_FUNC(pw_stream_connect, pwLib);
GET_FUNC(pw_stream_dequeue_buffer, pwLib);
@@ -207,12 +207,12 @@ pw_core_disconnect(struct pw_core *core)
GET_FUNC(pw_stream_disconnect, pwLib);
@@ -220,12 +220,12 @@ pw_core_disconnect(struct pw_core *core)
}
void
@ -75,11 +88,11 @@ index 1ecfc3196a..6f44b35964 100644
void
diff --git third_party/pipewire/pipewire/pipewire.h third_party/pipewire/pipewire/pipewire.h
index 69c523bd62..378502004c 100644
index b932103f46e6..2c88e28421ec 100644
--- third_party/pipewire/pipewire/pipewire.h
+++ third_party/pipewire/pipewire/pipewire.h
@@ -114,9 +114,9 @@ extern "C" {
* \brief PipeWire initialization and infrastructure functions
@@ -69,9 +69,9 @@ extern "C" {
* \{
*/
void
-pw_init(int *argc, char **argv[]);

View file

@ -1,6 +1,13 @@
--- python/mozbuild/mozbuild/gn_processor.py.orig 2022-11-03 22:19:40.000000000 +0100
+++ python/mozbuild/mozbuild/gn_processor.py 2022-11-07 21:11:42.596355000 +0100
@@ -166,6 +166,7 @@
commit 0c96c599752d8d8f68b5ed8a6344888d1b505773
Author: Christoph Moench-Tegeder <cmt@burggraben.net>
fixup gn_processor.py for FreeBSD
diff --git python/mozbuild/mozbuild/gn_processor.py python/mozbuild/mozbuild/gn_processor.py
index b6c51ee010a8..15b4bda9df6e 100644
--- python/mozbuild/mozbuild/gn_processor.py
+++ python/mozbuild/mozbuild/gn_processor.py
@@ -185,6 +185,7 @@ def filter_gn_config(path, gn_result, sandbox_vars, input_vars, gn_target):
}
oses = {
"android": "Android",
@ -8,7 +15,7 @@
"linux": "Linux",
"mac": "Darwin",
"openbsd": "OpenBSD",
@@ -662,15 +663,15 @@
@@ -735,16 +736,16 @@ def main():
vars_set = []
for is_debug in (True, False):
@ -24,11 +31,13 @@
+ if target_os in ("android", "freebsd", "linux", "win"):
target_cpus.append("x86")
- if target_os == "linux":
- target_cpus.extend(["ppc64", "riscv64", "mipsel", "mips64el"])
+ if target_os in ("freebsd", "linux"):
target_cpus.append("ppc64")
+ target_cpus.extend(["ppc64", "mipsel", "mips64el"])
for target_cpu in target_cpus:
vars = {
@@ -679,7 +680,7 @@
"host_cpu": "x64",
@@ -752,7 +753,7 @@ def main():
"target_cpu": target_cpu,
"target_os": target_os,
}

View file

@ -1,33 +0,0 @@
https://github.com/mozilla/mp4parse-rust/commit/8b5b652d38e007e736bb442ccd5aa5ed699db100
From 8b5b652d38e007e736bb442ccd5aa5ed699db100 Mon Sep 17 00:00:00 2001
From: Matthew Gregan <kinetik@flim.org>
Date: Thu, 16 Jun 2022 13:54:02 +1200
Subject: [PATCH] Fix `unstable-name-collisions` warning by using fully
qualified path.
---
mp4parse/src/lib.rs | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/mp4parse/src/lib.rs b/mp4parse/src/lib.rs
index 567ee21d..4f3d7153 100644
--- third_party/rust/mp4parse/src/lib.rs
+++ third_party/rust/mp4parse/src/lib.rs
@@ -3506,8 +3506,13 @@ macro_rules! impl_mul {
type Output = $output;
fn mul(self, rhs: $rhs) -> Self::Output {
- static_assertions::const_assert!(<$output>::MAX <= <$inner>::MAX as u64);
- static_assertions::const_assert!(<$lhs>::MAX * <$rhs>::MAX <= <$output>::MAX);
+ static_assertions::const_assert!(
+ <$output as UpperBounded>::MAX <= <$inner>::MAX as u64
+ );
+ static_assertions::const_assert!(
+ <$lhs as UpperBounded>::MAX * <$rhs as UpperBounded>::MAX
+ <= <$output as UpperBounded>::MAX
+ );
let lhs: $inner = self.get().into();
let rhs: $inner = rhs.get().into();

View file

@ -1,83 +0,0 @@
From a79edf4cfc54aad30a5630b217645c4b8274d8f7 Mon Sep 17 00:00:00 2001
From: Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de>
Date: Mon, 10 Jul 2023 09:46:53 +0000
Subject: [PATCH] Stop using old-style `simd_shuffle`
---
src/codegen/llvm.rs | 20 +++++++-------------
1 file changed, 7 insertions(+), 13 deletions(-)
diff --git third_party/rust/packed_simd_2/src/codegen/llvm.rs third_party/rust/packed_simd_2/src/codegen/llvm.rs
index b4c09849..bb482fac 100644
--- third_party/rust/packed_simd_2/src/codegen/llvm.rs
+++ third_party/rust/packed_simd_2/src/codegen/llvm.rs
@@ -5,14 +5,8 @@ use crate::sealed::Shuffle;
#[allow(unused_imports)] // FIXME: spurious warning?
use crate::sealed::Simd;
-// Shuffle intrinsics: expanded in users' crates, therefore public.
extern "platform-intrinsic" {
- pub fn simd_shuffle2<T, U>(x: T, y: T, idx: [u32; 2]) -> U;
- pub fn simd_shuffle4<T, U>(x: T, y: T, idx: [u32; 4]) -> U;
- pub fn simd_shuffle8<T, U>(x: T, y: T, idx: [u32; 8]) -> U;
- pub fn simd_shuffle16<T, U>(x: T, y: T, idx: [u32; 16]) -> U;
- pub fn simd_shuffle32<T, U>(x: T, y: T, idx: [u32; 32]) -> U;
- pub fn simd_shuffle64<T, U>(x: T, y: T, idx: [u32; 64]) -> U;
+ fn simd_shuffle<T, I, U>(x: T, y: T, idx: I) -> U;
}
#[allow(clippy::missing_safety_doc)]
@@ -22,7 +16,7 @@ where
T: Simd,
<T as Simd>::Element: Shuffle<[u32; 2], Output = U>,
{
- simd_shuffle2(x, y, IDX)
+ simd_shuffle(x, y, IDX)
}
#[allow(clippy::missing_safety_doc)]
@@ -32,7 +26,7 @@ where
T: Simd,
<T as Simd>::Element: Shuffle<[u32; 4], Output = U>,
{
- simd_shuffle4(x, y, IDX)
+ simd_shuffle(x, y, IDX)
}
#[allow(clippy::missing_safety_doc)]
@@ -42,7 +36,7 @@ where
T: Simd,
<T as Simd>::Element: Shuffle<[u32; 8], Output = U>,
{
- simd_shuffle8(x, y, IDX)
+ simd_shuffle(x, y, IDX)
}
#[allow(clippy::missing_safety_doc)]
@@ -52,7 +46,7 @@ where
T: Simd,
<T as Simd>::Element: Shuffle<[u32; 16], Output = U>,
{
- simd_shuffle16(x, y, IDX)
+ simd_shuffle(x, y, IDX)
}
#[allow(clippy::missing_safety_doc)]
@@ -62,7 +56,7 @@ where
T: Simd,
<T as Simd>::Element: Shuffle<[u32; 32], Output = U>,
{
- simd_shuffle32(x, y, IDX)
+ simd_shuffle(x, y, IDX)
}
#[allow(clippy::missing_safety_doc)]
@@ -72,7 +66,7 @@ where
T: Simd,
<T as Simd>::Element: Shuffle<[u32; 64], Output = U>,
{
- simd_shuffle64(x, y, IDX)
+ simd_shuffle(x, y, IDX)
}
extern "platform-intrinsic" {

View file

@ -0,0 +1,37 @@
--- third_party/libwebrtc/build/config/BUILDCONFIG.gn.orig 2022-10-09 20:42:58.113963000 +0200
+++ third_party/libwebrtc/build/config/BUILDCONFIG.gn 2022-10-09 20:46:16.128220000 +0200
@@ -132,6 +132,7 @@
# Set to true when compiling with the Clang compiler.
is_clang = current_os != "linux" || current_os == "openbsd" ||
+ current_os == "freebsd" ||
(current_cpu != "s390x" && current_cpu != "s390" &&
current_cpu != "ppc64" && current_cpu != "ppc" &&
current_cpu != "mips" && current_cpu != "mips64" &&
@@ -184,7 +185,7 @@
# TODO(dpranke): Add some sort of assert here that verifies that
# no toolchain omitted host_toolchain from its toolchain_args().
- if (host_os == "linux" || host_os == "openbsd") {
+ if (host_os == "linux" || host_os == "openbsd" || host_os == "freebsd") {
if (target_os != "linux") {
host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
} else if (is_clang) {
@@ -222,7 +223,7 @@
assert(host_os == "linux" || host_os == "mac",
"Android builds are only supported on Linux and Mac hosts.")
_default_toolchain = "//build/toolchain/android:android_clang_$target_cpu"
-} else if (target_os == "chromeos" || target_os == "linux" || target_os == "openbsd") {
+} else if (target_os == "chromeos" || target_os == "linux" || target_os == "openbsd" || target_os == "freebsd") {
# See comments in build/toolchain/cros/BUILD.gn about board compiles.
if (is_clang) {
_default_toolchain = "//build/toolchain/linux:clang_$target_cpu"
@@ -288,7 +289,7 @@
is_fuchsia = current_os == "fuchsia"
is_ios = current_os == "ios"
is_linux = current_os == "linux"
-is_bsd = current_os == "openbsd"
+is_bsd = current_os == "openbsd" || current_os == "freebsd"
is_mac = current_os == "mac"
is_nacl = current_os == "nacl"
is_win = current_os == "win" || current_os == "winuwp"

View file

@ -0,0 +1,23 @@
commit d1f5a45c1906e9f1e6a51f3b44c52d981bb3958c
Author: Christoph Moench-Tegeder <cmt@burggraben.net>
Date: Wed Oct 12 19:57:20 2022 +0200
pull in sys/types.h for u_XXX typedefs on FreeBSD 12
In file included from /wrkdirs/usr/ports/www/firefox/work/firefox-106.0/third_party/libwebrtc/rtc_base/ip_address.cc:20:
/usr/include/netinet/ip.h:53:2: error: unknown type name 'u_char'; did you mean 'char'?
u_char ip_hl:4, /* header length */
diff --git third_party/libwebrtc/rtc_base/ip_address.cc third_party/libwebrtc/rtc_base/ip_address.cc
index d544b611e149..ef9b742dac5f 100644
--- third_party/libwebrtc/rtc_base/ip_address.cc
+++ third_party/libwebrtc/rtc_base/ip_address.cc
@@ -11,6 +11,8 @@
#if defined(WEBRTC_POSIX)
#include <netinet/in.h>
#include <sys/socket.h>
+/* for u_char/u_short etc on FreeBSD 12 */
+#include <sys/types.h>
#include "absl/strings/string_view.h"
#ifdef OPENBSD

View file

@ -0,0 +1,26 @@
Let geoip/geoip6 file paths be set by prefs like everything else and let
the new getTorFile() deal with it.
Index: toolkit/components/tor-launcher/TorProcess.sys.mjs
--- toolkit/components/tor-launcher/TorProcess.sys.mjs.orig
+++ toolkit/components/tor-launcher/TorProcess.sys.mjs
@@ -254,16 +254,14 @@ export class TorProcess {
"torrc-defaults",
false
);
- // The geoip and geoip6 files are in the same directory as torrc-defaults.
- const geoipFile = torrcDefaultsFile.clone();
- geoipFile.leafName = "geoip";
- const geoip6File = torrcDefaultsFile.clone();
- geoip6File.leafName = "geoip6";
+ const geoipFile = lazy.TorLauncherUtil.getTorFile("geoip", false);
+ const geoip6File = lazy.TorLauncherUtil.getTorFile("geoip6", false);
this.#args = [];
if (torrcDefaultsFile) {
this.#args.push("--defaults-torrc", torrcDefaultsFile.path);
}
+ this.#args.push("--ignore-missing-torrc");
this.#args.push("-f", torrcFile.path);
this.#args.push("DataDirectory", this.#dataDir.path);
this.#args.push("ClientOnionAuthDir", onionAuthDir.path);

View file

@ -1,20 +0,0 @@
--- ./toolkit/components/tor-launcher/TorLauncherUtil.jsm.orig 2022-12-12 08:48:18.438560000 +0000
+++ ./toolkit/components/tor-launcher/TorLauncherUtil.jsm 2022-12-12 08:49:39.039184000 +0000
@@ -31,7 +31,7 @@
checkIPCPathLen = true;
static _isFirstIPCPathRequest = true;
- static _isUserDataOutsideOfAppDir = undefined;
+ static _isUserDataOutsideOfAppDir = true;
static _dataDir = null;
static _appDir = null;
@@ -340,7 +340,7 @@
static get dataDir() {
if (!this._dataDir) {
const profDir = Services.dirsvc.get("ProfD", Ci.nsIFile);
- this._dataDir = profDir.parent.parent;
+ this._dataDir = profDir;
}
return this._dataDir;
}

View file

@ -1,22 +0,0 @@
--- ./toolkit/components/tor-launcher/TorProcess.jsm.orig 2022-12-12 13:13:52.306244000 +0100
+++ ./toolkit/components/tor-launcher/TorProcess.jsm 2022-12-12 13:14:59.887641000 +0100
@@ -254,6 +254,8 @@
this._dataDir = TorLauncherUtil.getTorFile("tordatadir", true);
const onionAuthDir = TorLauncherUtil.getTorFile("toronionauthdir", true);
const hashedPassword = TorProtocolService.torGetPassword(true);
+ const geoipFile = TorLauncherUtil.getTorFile("geoip", false);
+ const geoip6File = TorLauncherUtil.getTorFile("geoip6", false);
let detailsKey;
if (!this._exeFile) {
detailsKey = "tor_missing";
@@ -282,10 +284,6 @@
false
);
// The geoip and geoip6 files are in the same directory as torrc-defaults.
- const geoipFile = torrcDefaultsFile.clone();
- geoipFile.leafName = "geoip";
- const geoip6File = torrcDefaultsFile.clone();
- geoip6File.leafName = "geoip6";
this._args = [];
if (torrcDefaultsFile) {

View file

@ -0,0 +1,80 @@
--- toolkit/torbutton/jar.mn.orig 2023-11-06 01:20:34.330541000 +0100
+++ toolkit/torbutton/jar.mn 2023-11-06 01:25:07.776233000 +0100
@@ -13,3 +13,77 @@
% locale torbutton en-US %locale/en-US/
locale/en-US/ (chrome/locale/en-US/*)
+% locale torbutton ar %locale/ar/
+ locale/ar/ (chrome/locale/ar/*)
+% locale torbutton ca %locale/ca/
+ locale/ca/ (chrome/locale/ca/*)
+% locale torbutton cs %locale/cs/
+ locale/cs/ (chrome/locale/cs/*)
+% locale torbutton da %locale/da/
+ locale/da/ (chrome/locale/da/*)
+% locale torbutton de %locale/de/
+ locale/de/ (chrome/locale/de/*)
+% locale torbutton el %locale/el/
+ locale/el/ (chrome/locale/el/*)
+% locale torbutton es-ES %locale/es-ES/
+ locale/es-ES/ (chrome/locale/es-ES/*)
+% locale torbutton fa %locale/fa/
+ locale/fa/ (chrome/locale/fa/*)
+% locale torbutton fi %locale/fi/
+ locale/fi/ (chrome/locale/fi/*)
+% locale torbutton fr %locale/fr/
+ locale/fr/ (chrome/locale/fr/*)
+% locale torbutton ga-IE %locale/ga-IE/
+ locale/ga-IE/ (chrome/locale/ga-IE/*)
+% locale torbutton he %locale/he/
+ locale/he/ (chrome/locale/he/*)
+% locale torbutton hu %locale/hu/
+ locale/hu/ (chrome/locale/hu/*)
+% locale torbutton id %locale/id/
+ locale/id/ (chrome/locale/id/*)
+% locale torbutton is %locale/is/
+ locale/is/ (chrome/locale/is/*)
+% locale torbutton it %locale/it/
+ locale/it/ (chrome/locale/it/*)
+% locale torbutton ja %locale/ja/
+ locale/ja/ (chrome/locale/ja/*)
+% locale torbutton ka %locale/ka/
+ locale/ka/ (chrome/locale/ka/*)
+% locale torbutton ko %locale/ko/
+ locale/ko/ (chrome/locale/ko/*)
+% locale torbutton lt %locale/lt/
+ locale/lt/ (chrome/locale/lt/*)
+% locale torbutton mk %locale/mk/
+ locale/mk/ (chrome/locale/mk/*)
+% locale torbutton ms %locale/ms/
+ locale/ms/ (chrome/locale/ms/*)
+% locale torbutton my %locale/my/
+ locale/my/ (chrome/locale/my/*)
+% locale torbutton nb-NO %locale/nb-NO/
+ locale/nb-NO/ (chrome/locale/nb-NO/*)
+% locale torbutton nl %locale/nl/
+ locale/nl/ (chrome/locale/nl/*)
+% locale torbutton pl %locale/pl/
+ locale/pl/ (chrome/locale/pl/*)
+% locale torbutton pt-BR %locale/pt-BR/
+ locale/pt-BR/ (chrome/locale/pt-BR/*)
+% locale torbutton ro %locale/ro/
+ locale/ro/ (chrome/locale/ro/*)
+% locale torbutton ru %locale/ru/
+ locale/ru/ (chrome/locale/ru/*)
+% locale torbutton sq %locale/sq/
+ locale/sq/ (chrome/locale/sq/*)
+% locale torbutton sv-SE %locale/sv-SE/
+ locale/sv-SE/ (chrome/locale/sv-SE/*)
+% locale torbutton th %locale/th/
+ locale/th/ (chrome/locale/th/*)
+% locale torbutton tr %locale/tr/
+ locale/tr/ (chrome/locale/tr/*)
+% locale torbutton uk %locale/uk/
+ locale/uk/ (chrome/locale/uk/*)
+% locale torbutton vi %locale/vi/
+ locale/vi/ (chrome/locale/vi/*)
+% locale torbutton zh-CN %locale/zh-CN/
+ locale/zh-CN/ (chrome/locale/zh-CN/*)
+% locale torbutton zh-TW %locale/zh-TW/
+ locale/zh-TW/ (chrome/locale/zh-TW/*)

View file

@ -0,0 +1,17 @@
--- toolkit/xre/glxtest/glxtest.cpp.orig 2023-05-28 22:08:21.663847000 +0200
+++ toolkit/xre/glxtest/glxtest.cpp 2023-05-28 22:09:33.647075000 +0200
@@ -195,9 +195,14 @@
static void get_pci_status() {
log("GLX_TEST: get_pci_status start\n");
+#if defined(__FreeBSD__)
+ if (access("/dev/pci", F_OK) != 0) {
+ record_warning("cannot access /dev/pci");
+#else
if (access("/sys/bus/pci/", F_OK) != 0 &&
access("/sys/bus/pci_express/", F_OK) != 0) {
record_warning("cannot access /sys/bus/pci");
+#endif
return;
}

View file

@ -1,14 +0,0 @@
--- toolkit/xre/nsXREDirProvider.cpp.orig 2023-01-15 10:55:50.058634000 +0100
+++ toolkit/xre/nsXREDirProvider.cpp 2023-01-15 10:56:48.735300000 +0100
@@ -1653,7 +1653,11 @@
ToLowerCase(folder);
rv = AppendProfileString(aFile, folder.BeginReading());
+ } else {
+ nsAutoCString folder(".tor-browser-profiles");
+ rv = aFile->AppendNative(folder);
}
+
NS_ENSURE_SUCCESS(rv, rv);
#else