mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 17:59:20 -04:00
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:
parent
9b214a66ea
commit
5bab21c20a
39 changed files with 45344 additions and 19358 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
69
www/tor-browser/files/packagemanual.py
Normal file
69
www/tor-browser/files/packagemanual.py
Normal 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)
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
227
www/tor-browser/files/patch-browser-base-jar.mn
Normal file
227
www/tor-browser/files/patch-browser-base-jar.mn
Normal 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)
|
|
@ -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");
|
||||
|
|
10
www/tor-browser/files/patch-bug1427152
Normal file
10
www/tor-browser/files/patch-bug1427152
Normal 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"),
|
|
@ -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));
|
||||
|
|
|
@ -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) {
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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)
|
|
@ -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
|
15
www/tor-browser/files/patch-i386-protobuf-alignment
Normal file
15
www/tor-browser/files/patch-i386-protobuf-alignment
Normal 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_;
|
35
www/tor-browser/files/patch-js_public_Utility.h
Normal file
35
www/tor-browser/files/patch-js_public_Utility.h
Normal 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
|
|
@ -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
264
www/tor-browser/files/patch-libwebrtc-powerpc64
Normal file
264
www/tor-browser/files/patch-libwebrtc-powerpc64
Normal 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
|
||||
|
|
@ -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");
|
||||
|
|
|
@ -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:
|
|
@ -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[]);
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
@ -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" {
|
|
@ -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"
|
|
@ -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
|
|
@ -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);
|
|
@ -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;
|
||||
}
|
|
@ -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) {
|
80
www/tor-browser/files/patch-toolkit_torbutton_jar.mn
Normal file
80
www/tor-browser/files/patch-toolkit_torbutton_jar.mn
Normal 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/*)
|
17
www/tor-browser/files/patch-toolkit_xre_glxtest.cpp
Normal file
17
www/tor-browser/files/patch-toolkit_xre_glxtest.cpp
Normal 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;
|
||||
}
|
||||
|
|
@ -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
|
Loading…
Add table
Reference in a new issue