lists.torproject.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

tbb-commits

Thread Start a new thread
Download
Threads by month
  • ----- 2025 -----
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2015 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2014 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
tbb-commits@lists.torproject.org

April 2024

  • 1 participants
  • 152 discussions
[Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] 4 commits: fixup! Base Browser strings
by Pier Angelo Vendrame (@pierov) 22 Apr '24

22 Apr '24
Pier Angelo Vendrame pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 26909ecf by Henry Wilkes at 2024-04-22T17:14:34+00:00 fixup! Base Browser strings Bug 42537: Move base-browser.ftl to toolkit. - - - - - 3db6db01 by Henry Wilkes at 2024-04-22T17:14:34+00:00 fixup! Bug 4234: Use the Firefox Update Process for Base Browser. Bug 42537: Move base-browser.ftl to toolkit. - - - - - f223c735 by Henry Wilkes at 2024-04-22T17:14:34+00:00 fixup! Bug 40926: Implemented the New Identity feature Bug 42537: Move base-browser.ftl to toolkit. - - - - - 9d6fa205 by Henry Wilkes at 2024-04-22T17:14:34+00:00 fixup! Bug 41698: Reword the recommendation badges in about:addons Bug 42537: Move base-browser.ftl to toolkit. - - - - - 9 changed files: - browser/base/content/aboutDialog.xhtml - browser/base/content/browser.xhtml - browser/components/newidentity/content/newIdentityDialog.xhtml - browser/components/preferences/preferences.xhtml - browser/locales/jar.mn - browser/locales-preview/base-browser-no-translate.ftl → toolkit/locales-preview/base-browser-no-translate.ftl - browser/locales/en-US/browser/base-browser.ftl → toolkit/locales/en-US/toolkit/global/base-browser.ftl - toolkit/locales/jar.mn - toolkit/mozapps/extensions/content/aboutaddons.html Changes: ===================================== browser/base/content/aboutDialog.xhtml ===================================== @@ -31,7 +31,7 @@ <linkset> <html:link rel="localization" href="branding/brand.ftl"/> <html:link rel="localization" href="browser/aboutDialog.ftl"/> - <html:link rel="localization" href="browser/base-browser.ftl"/> + <html:link rel="localization" href="toolkit/global/base-browser.ftl"/> <html:link rel="localization" href="browser/tor-browser.ftl"/> </linkset> ===================================== browser/base/content/browser.xhtml ===================================== @@ -95,7 +95,7 @@ <link rel="localization" href="toolkit/branding/brandings.ftl"/> <link rel="localization" href="toolkit/global/textActions.ftl"/> <link rel="localization" href="toolkit/printing/printUI.ftl"/> - <link rel="localization" href="browser/base-browser.ftl"/> + <link rel="localization" href="toolkit/global/base-browser.ftl"/> <link rel="localization" href="browser/tor-browser.ftl"/> <!-- Untranslated FTL files --> <link rel="localization" href="preview/firefoxSuggest.ftl" /> ===================================== browser/components/newidentity/content/newIdentityDialog.xhtml ===================================== @@ -22,7 +22,7 @@ <dialog id="newIdentityDialog" buttons="accept,cancel" defaultButton="accept"> <linkset> <html:link rel="localization" href="branding/brand.ftl" /> - <html:link rel="localization" href="browser/base-browser.ftl" /> + <html:link rel="localization" href="toolkit/global/base-browser.ftl" /> </linkset> <div xmlns="http://www.w3.org/1999/xhtml"> ===================================== browser/components/preferences/preferences.xhtml ===================================== @@ -59,7 +59,7 @@ <link rel="localization" href="security/certificates/certManager.ftl"/> <link rel="localization" href="security/certificates/deviceManager.ftl"/> <link rel="localization" href="toolkit/updates/history.ftl"/> - <link rel="localization" href="browser/base-browser.ftl"/> + <link rel="localization" href="toolkit/global/base-browser.ftl"/> <link rel="localization" href="browser/tor-browser.ftl"/> <link rel="shortcut icon" href="chrome://global/skin/icons/settings.svg"/> ===================================== browser/locales/jar.mn ===================================== @@ -14,7 +14,6 @@ preview/firefoxSuggest.ftl (../components/urlbar/content/firefoxSuggest.ftl) preview/identityCredentialNotification.ftl (../components/credentialmanager/identityCredentialNotification.ftl) preview/stripOnShare.ftl (../components/urlbar/content/stripOnShare.ftl) - preview/base-browser-no-translate.ftl (../locales-preview/base-browser-no-translate.ftl) preview/tor-browser-no-translate.ftl (../locales-preview/tor-browser-no-translate.ftl) browser (%browser/**/*.ftl) ===================================== browser/locales-preview/base-browser-no-translate.ftl → toolkit/locales-preview/base-browser-no-translate.ftl ===================================== ===================================== browser/locales/en-US/browser/base-browser.ftl → toolkit/locales/en-US/toolkit/global/base-browser.ftl ===================================== ===================================== toolkit/locales/jar.mn ===================================== @@ -8,6 +8,7 @@ services (%services/**/*.ftl) toolkit (%toolkit/**/*.ftl) locales-preview/aboutTranslations.ftl (../locales-preview/aboutTranslations.ftl) + locales-preview/base-browser-no-translate.ftl (../locales-preview/base-browser-no-translate.ftl) #ifdef MOZ_LAYOUT_DEBUGGER layoutdebug/layoutdebug.ftl (../../layout/tools/layout-debug/ui/content/layoutdebug.ftl) #endif ===================================== toolkit/mozapps/extensions/content/aboutaddons.html ===================================== @@ -35,7 +35,7 @@ <link rel="localization" href="toolkit/about/aboutAddons.ftl" /> <link rel="localization" href="toolkit/about/abuseReports.ftl" /> - <link rel="localization" href="browser/base-browser.ftl" /> + <link rel="localization" href="toolkit/global/base-browser.ftl" /> <!-- Defer scripts so all the templates are loaded by the time they run. --> <script View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/94374b… -- This project does not include diff previews in email notifications. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/94374b… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 42537 (TB): Move our Fluent files to toolkit.
by Pier Angelo Vendrame (@pierov) 22 Apr '24

22 Apr '24
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: fd4f3d0b by Pier Angelo Vendrame at 2024-04-22T19:13:34+02:00 Bug 42537 (TB): Move our Fluent files to toolkit. For tor-browser#42537, we are moving our Fluent files to toolkit, so that they are available also on Android, shall we need them. This needs a couple of changes also on the tor-browser-build side. - - - - - 1 changed file: - projects/firefox/build Changes: ===================================== projects/firefox/build ===================================== @@ -118,7 +118,7 @@ mkdir "$HOME/.mozbuild" ln -s ja ja-JP-mac for lang in $supported_locales; do # Fluent - mv $lang/base-browser.ftl "$l10ncentral/$lang/browser/browser/" + mv $lang/base-browser.ftl "$l10ncentral/$lang/toolkit/toolkit/global/" # Properties (they use a different directory) mv $lang/* "$l10ncentral/$lang/browser/chrome/browser/" done @@ -139,7 +139,7 @@ mkdir "$HOME/.mozbuild" source_lang="ja" fi [% END -%] - mv "$transl_tor_browser/$source_lang/tor-browser.ftl" "$l10ncentral/$lang/browser/browser/" + mv "$transl_tor_browser/$source_lang/tor-browser.ftl" "$l10ncentral/$lang/toolkit/toolkit/global/" mv "$transl_tor_browser/$source_lang/cryptoSafetyPrompt.properties" "$l10ncentral/$lang/browser/chrome/browser/" mv "$transl_tor_browser/$source_lang" "$torbutton_locales/$lang" echo "% locale torbutton $lang %locale/$lang/" >> "$torbutton_jar" View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/f… -- This project does not include diff previews in email notifications. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/f… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] 3 commits: fixup! Lox integration
by Pier Angelo Vendrame (@pierov) 22 Apr '24

22 Apr '24
Pier Angelo Vendrame pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 303a1239 by Henry Wilkes at 2024-04-22T17:35:39+01:00 fixup! Lox integration Bug 42476: Drop unnecessary #window property. - - - - - 45f5e2d9 by Henry Wilkes at 2024-04-22T17:35:39+01:00 fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection Bug 42476: Disable the Lox module for the stable release. - - - - - 94374ba5 by Henry Wilkes at 2024-04-22T18:01:19+01:00 fixup! Lox integration Bug 42476: Disable the Lox module for the stable release. - - - - - 3 changed files: - browser/components/torpreferences/content/connectionPane.js - browser/components/torpreferences/content/provideBridgeDialog.js - toolkit/components/lox/Lox.sys.mjs Changes: ===================================== browser/components/torpreferences/content/connectionPane.js ===================================== @@ -1284,6 +1284,11 @@ const gLoxStatus = { * Initialize the bridge pass area. */ init() { + if (!Lox.enabled) { + // Area should remain inactive and hidden. + return; + } + this._area = document.getElementById("tor-bridges-lox-status"); this._detailsArea = document.getElementById("tor-bridges-lox-details"); this._nextUnlockCounterEl = document.getElementById( @@ -1333,6 +1338,10 @@ const gLoxStatus = { * Uninitialize the built-in bridges area. */ uninit() { + if (!Lox.enabled) { + return; + } + Services.obs.removeObserver(this, TorSettingsTopics.SettingsChanged); Services.obs.removeObserver(this, LoxTopics.UpdateActiveLoxId); Services.obs.removeObserver(this, LoxTopics.UpdateEvents); ===================================== browser/components/torpreferences/content/provideBridgeDialog.js ===================================== @@ -72,8 +72,7 @@ const gProvideBridgeDialog = { document.l10n.setAttributes(document.documentElement, titleId); - // TODO: Make conditional on Lox being enabled. - this._allowLoxInvite = mode !== "edit"; // && Lox.enabled + this._allowLoxInvite = mode !== "edit" && Lox.enabled; document.l10n.setAttributes( document.getElementById("user-provide-bridge-textarea-label"), @@ -403,33 +402,39 @@ const gProvideBridgeDialog = { return null; } - let loxInvite = null; - for (let line of this._textarea.value.split(/\r?\n/)) { - line = line.trim(); - if (!line) { - continue; - } - // TODO: Once we have a Lox invite encoding, distinguish between a valid - // invite and something that looks like it should be an invite. - const isLoxInvite = Lox.validateInvitation(line); - if (isLoxInvite) { - if (!this._allowLoxInvite) { - this.updateError({ type: "not-allowed-invite" }); - return null; + // Only check if this looks like a Lox invite when the Lox module is + // enabled. + if (Lox.enabled) { + let loxInvite = null; + for (let line of this._textarea.value.split(/\r?\n/)) { + line = line.trim(); + if (!line) { + continue; } - if (loxInvite) { - this.updateError({ type: "multiple-invites" }); + // TODO: Once we have a Lox invite encoding, distinguish between a valid + // invite and something that looks like it should be an invite. + const isLoxInvite = Lox.validateInvitation(line); + if (isLoxInvite) { + if (!this._allowLoxInvite) { + // Lox is enabled, but not allowed invites when editing bridge + // addresses. + this.updateError({ type: "not-allowed-invite" }); + return null; + } + if (loxInvite) { + this.updateError({ type: "multiple-invites" }); + return null; + } + loxInvite = line; + } else if (loxInvite) { + this.updateError({ type: "mixed" }); return null; } - loxInvite = line; - } else if (loxInvite) { - this.updateError({ type: "mixed" }); - return null; } - } - if (loxInvite) { - return { loxInvite }; + if (loxInvite) { + return { loxInvite }; + } } const validation = validateBridgeLines(this._textarea.value); ===================================== toolkit/components/lox/Lox.sys.mjs ===================================== @@ -1,4 +1,5 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; +import { AppConstants } from "resource://gre/modules/AppConstants.sys.mjs"; import { clearInterval, setInterval, @@ -103,8 +104,24 @@ export class LoxError extends Error { } class LoxImpl { + /** + * Whether the Lox module has completed initialization. + * + * @type {boolean} + */ #initialized = false; - #window = null; + + /** + * Whether the Lox module is enabled for this Tor Browser instance. + * + * @type {boolean} + */ + #enabled = AppConstants.MOZ_UPDATE_CHANNEL !== "release"; + + get enabled() { + return this.#enabled; + } + #pubKeyPromise = null; #encTablePromise = null; #constantsPromise = null; @@ -218,13 +235,14 @@ class LoxImpl { * Assert that the module is initialized. */ #assertInitialized() { - if (!this.#initialized) { + if (!this.enabled || !this.#initialized) { throw new LoxError("Not initialized"); } } get #inuse() { return ( + this.enabled && Boolean(this.#activeLoxId) && lazy.TorSettings.bridges.enabled === true && lazy.TorSettings.bridges.source === lazy.TorBridgeSource.Lox @@ -532,16 +550,20 @@ class LoxImpl { } async init() { + if (!this.enabled) { + lazy.logger.info( + "Skipping initialization since Lox module is not enabled" + ); + return; + } // If lox_id is set, load it Services.obs.addObserver(this, lazy.TorSettingsTopics.SettingsChanged); Services.obs.addObserver(this, lazy.TorSettingsTopics.Ready); // Hack to make the generated wasm happy - this.#window = { - crypto, - }; - this.#window.window = this.#window; - await lazy.init(this.#window); + const win = { crypto }; + win.window = win; + await lazy.init(win); lazy.set_panic_hook(); if (typeof lazy.open_invite !== "function") { throw new LoxError("Initialization failed"); @@ -551,6 +573,9 @@ class LoxImpl { } async uninit() { + if (!this.enabled) { + return; + } Services.obs.removeObserver(this, lazy.TorSettingsTopics.SettingsChanged); Services.obs.removeObserver(this, lazy.TorSettingsTopics.Ready); if (this.#domainFrontedRequests !== null) { @@ -561,7 +586,6 @@ class LoxImpl { this.#domainFrontedRequests = null; } this.#initialized = false; - this.#window = null; this.#invites = []; this.#pubKeys = null; this.#encTable = null; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/07ec58… -- This project does not include diff previews in email notifications. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/07ec58… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] 3 commits: Bug 41112: Fix indentation of projects/browser/RelativeLink/start-browser
by boklm (@boklm) 22 Apr '24

22 Apr '24
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: ac2bba26 by Nicolas Vigier at 2024-04-22T18:22:06+02:00 Bug 41112: Fix indentation of projects/browser/RelativeLink/start-browser - - - - - 9b42ad01 by Nicolas Vigier at 2024-04-22T18:22:08+02:00 Bug 41083: Add more spaces to projects/browser/config - - - - - c93586fc by Nicolas Vigier at 2024-04-22T18:22:11+02:00 Bug 41083: Make a deb package for Mullvad Browser - - - - - 17 changed files: - projects/browser/RelativeLink/start-browser - projects/browser/config - + projects/linux-packages/Makefile.in - + projects/linux-packages/build - + projects/linux-packages/config - + projects/linux-packages/debian/browser.desktop.in - + projects/linux-packages/debian/changelog.in - + projects/linux-packages/debian/compat - + projects/linux-packages/debian/control.in - + projects/linux-packages/debian/copyright.in - + projects/linux-packages/debian/docs.in - + projects/linux-packages/debian/install.in - + projects/linux-packages/debian/links.in - + projects/linux-packages/debian/rules - projects/release/build - projects/release/config - rbm Changes: ===================================== projects/browser/RelativeLink/start-browser ===================================== @@ -9,9 +9,9 @@ complain_dialog_title="[% c('var/Project_Name') %]" # Make sure this script wasn't started as 'sh start-[% c('var/project-name') %]' or similar. if [ "x$BASH" = "x" ]; then - echo "$complain_dialog_title should be started as './start-[% c('var/project-name') %]'" - echo "Exiting." >&2 - exit 1; + echo "$complain_dialog_title should be started as './start-[% c('var/project-name') %]'" + echo "Exiting." >&2 + exit 1; fi # Do not (try to) connect to the session manager @@ -21,84 +21,86 @@ unset SESSION_MANAGER # Usage: complain message # message must not begin with a dash. complain () { - # Trim leading newlines, to avoid breaking formatting in some dialogs. - complain_message="`echo "$1" | sed '/./,$!d'`" - - # If we're being run in debug/verbose mode, complain to stderr. - if [ "$show_output" -eq 1 ]; then - echo "$complain_message" >&2 - return - fi - - # Otherwise, we're being run by a GUI program of some sort; - # try to pop up a message in the GUI in the nicest way - # possible. - # - # In mksh, non-existent commands return 127; I'll assume all - # other shells set the same exit code if they can't run a - # command. (xmessage returns 1 if the user clicks the WM - # close button, so we do need to look at the exact exit code, - # not just assume the command failed to display a message if - # it returns non-zero.) - - # First, try zenity. - zenity --error \ - --title="$complain_dialog_title" \ - --text="$complain_message" - if [ "$?" -ne 127 ]; then - return - fi - - # Try kdialog. - kdialog --title "$complain_dialog_title" \ - --error "$complain_message" - if [ "$?" -ne 127 ]; then - return - fi - - # Try xmessage. - xmessage -title "$complain_dialog_title" \ - -center \ - -buttons OK \ - -default OK \ - -xrm '*message.scrollVertical: Never' \ - "$complain_message" - if [ "$?" -ne 127 ]; then - return - fi - - # Try gxmessage. This one isn't installed by default on - # Debian with the default GNOME installation, so it seems to - # be the least likely program to have available, but it might - # be used by one of the 'lightweight' Gtk-based desktop - # environments. - gxmessage -title "$complain_dialog_title" \ - -center \ - -buttons GTK_STOCK_OK \ - -default OK \ - "$complain_message" - if [ "$?" -ne 127 ]; then - return - fi + # Trim leading newlines, to avoid breaking formatting in some dialogs. + complain_message="`echo "$1" | sed '/./,$!d'`" + + # If we're being run in debug/verbose mode, complain to stderr. + if [ "$show_output" -eq 1 ]; then + echo "$complain_message" >&2 + return + fi + + # Otherwise, we're being run by a GUI program of some sort; + # try to pop up a message in the GUI in the nicest way + # possible. + # + # In mksh, non-existent commands return 127; I'll assume all + # other shells set the same exit code if they can't run a + # command. (xmessage returns 1 if the user clicks the WM + # close button, so we do need to look at the exact exit code, + # not just assume the command failed to display a message if + # it returns non-zero.) + + # First, try zenity. + zenity --error \ + --title="$complain_dialog_title" \ + --text="$complain_message" + if [ "$?" -ne 127 ]; then + return + fi + + # Try kdialog. + kdialog --title "$complain_dialog_title" \ + --error "$complain_message" + if [ "$?" -ne 127 ]; then + return + fi + + # Try xmessage. + xmessage -title "$complain_dialog_title" \ + -center \ + -buttons OK \ + -default OK \ + -xrm '*message.scrollVertical: Never' \ + "$complain_message" + if [ "$?" -ne 127 ]; then + return + fi + + # Try gxmessage. This one isn't installed by default on + # Debian with the default GNOME installation, so it seems to + # be the least likely program to have available, but it might + # be used by one of the 'lightweight' Gtk-based desktop + # environments. + gxmessage -title "$complain_dialog_title" \ + -center \ + -buttons GTK_STOCK_OK \ + -default OK \ + "$complain_message" + if [ "$?" -ne 127 ]; then + return + fi } if [ "`id -u`" -eq 0 ]; then - complain "The [% c('var/Project_Name') %] should not be run as root. Exiting." - exit 1 + complain "The [% c('var/Project_Name') %] should not be run as root. Exiting." + exit 1 fi if test -r /proc/cpuinfo && ! grep -q '^flags\s*:.* sse2' /proc/cpuinfo; then - complain "[% c('var/Project_Name') %] requires a CPU with SSE2 support. Exiting." - exit 1 + complain "[% c('var/Project_Name') %] requires a CPU with SSE2 support. Exiting." + exit 1 fi print_usage () { - printf "\n[% c('var/Project_Name') %] Script Options\n" - printf " --verbose Display [% IF c("var/tor-browser") -%]Tor and [% END -%]the browser output in the terminal\n" - printf " --log [file] Record [% IF c("var/tor-browser") -%]Tor and [% END -%]the browser output in file (default: [% c('var/project-name') %].log)\n" - printf " --detach Detach from terminal and run [% c('var/Project_Name') %] in the background.\n" + printf "\n[% c('var/Project_Name') %] Script Options\n" + printf " --verbose Display [% IF c("var/tor-browser") -%]Tor and [% END -%]the browser output in the terminal\n" + printf " --log [file] Record [% IF c("var/tor-browser") -%]Tor and [% END -%]the browser output in file (default: [% c('var/project-name') %].log)\n" + printf " --detach Detach from terminal and run [% c('var/Project_Name') %] in the background.\n" + if test -z "$system_install"; then printf " --register-app Register [% c('var/Project_Name') %] as a desktop app for this user\n" printf " --unregister-app Unregister [% c('var/Project_Name') %] as a desktop app for this user\n" + fi } log_output=0 show_output=0 @@ -108,116 +110,122 @@ register_desktop_app=0 logfile=/dev/null while : do - case "$1" in - --detach) - detach=1 - shift - ;; - -v | --verbose | -d | --debug) - show_output=1 - verbose_arg="$2" - shift - ;; - -h | "-?" | --help | -help) - show_usage=1 - show_output=1 - shift - ;; - -l | --log) - if [ -z "$2" -o "${2:0:1}" == "-" ]; then - printf "Logging [% c('var/Project_Name') %] debug information to [% c('var/project-name') %].log\n" - logfile="../[% c('var/project-name') %].log" - elif [ "${2:0:1}" == "/" -o "${2:0:1}" == "~" ]; then - printf "Logging [% c('var/Project_Name') %] debug information to %s\n" "$2" - logfile="$2" - shift - else - printf "Logging [% c('var/Project_Name') %] debug information to %s\n" "$2" - logfile="../$2" - shift - fi - log_output=1 - shift - ;; - --register-app) - register_desktop_app=1 - show_output=1 - shift - ;; - --unregister-app) - register_desktop_app=-1 - show_output=1 - shift - ;; - *) # No more options - break - ;; - esac + case "$1" in + --detach) + detach=1 + shift + ;; + -v | --verbose | -d | --debug) + show_output=1 + verbose_arg="$2" + shift + ;; + -h | "-?" | --help | -help) + show_usage=1 + show_output=1 + shift + ;; + -l | --log) + if [ -z "$2" -o "${2:0:1}" == "-" ]; then + printf "Logging [% c('var/Project_Name') %] debug information to [% c('var/project-name') %].log\n" + logfile="../[% c('var/project-name') %].log" + elif [ "${2:0:1}" == "/" -o "${2:0:1}" == "~" ]; then + printf "Logging [% c('var/Project_Name') %] debug information to %s\n" "$2" + logfile="$2" + shift + else + printf "Logging [% c('var/Project_Name') %] debug information to %s\n" "$2" + logfile="../$2" + shift + fi + log_output=1 + shift + ;; + --register-app) + register_desktop_app=1 + show_output=1 + shift + ;; + --unregister-app) + register_desktop_app=-1 + show_output=1 + shift + ;; + *) # No more options + break + ;; + esac done # We can't detach and show output at the same time.. if [ "$show_output" -eq 1 -a "$detach" -eq 1 ]; then - detach=0 + detach=0 fi if [ "$show_output" -eq 0 ]; then - # If the user hasn't requested 'debug mode' or --help, close stdout and stderr, - # to keep Firefox and the stuff loaded by/for it (including the - # system's shared-library loader) from printing messages to - # $HOME/.xsession-errors or other files. (Users wouldn't have seen - # messages there anyway.) - exec > "$logfile" - exec 2> "$logfile" + # If the user hasn't requested 'debug mode' or --help, close stdout and stderr, + # to keep Firefox and the stuff loaded by/for it (including the + # system's shared-library loader) from printing messages to + # $HOME/.xsession-errors or other files. (Users wouldn't have seen + # messages there anyway.) + exec > "$logfile" + exec 2> "$logfile" fi # If XAUTHORITY is unset, set it to its default value of $HOME/.Xauthority # before we change HOME below. (See xauth(1) and #1945.) XDM and KDM rely # on applications using this default value. if [ -z "$XAUTHORITY" ]; then - XAUTHORITY=~/.Xauthority - export XAUTHORITY + XAUTHORITY=~/.Xauthority + export XAUTHORITY fi # If this script is being run through a symlink, we need to know where # in the filesystem the script itself is, not where the symlink is. myname="$0" if [ -L "$myname" ]; then - # XXX readlink is not POSIX, but is present in GNU coreutils - # and on FreeBSD. Unfortunately, the -f option (which follows - # a whole chain of symlinks until it reaches a non-symlink - # path name) is a GNUism, so we have to have a fallback for - # FreeBSD. Fortunately, FreeBSD has realpath instead; - # unfortunately, that's also non-POSIX and is not present in - # GNU coreutils. - # - # If this launcher were a C program, we could just use the - # realpath function, which *is* POSIX. Too bad POSIX didn't - # make that function accessible to shell scripts. - - # If realpath is available, use it; it Does The Right Thing. - possibly_my_real_name="`realpath "$myname" 2>/dev/null`" - if [ "$?" -eq 0 ]; then - myname="$possibly_my_real_name" - else - # realpath is not available; hopefully readlink -f works. - myname="`readlink -f "$myname" 2>/dev/null`" - if [ "$?" -ne 0 ]; then - # Ugh. - complain "start-[% c('var/project-name') %] cannot be run using a symlink on this operating system." - fi - fi + # XXX readlink is not POSIX, but is present in GNU coreutils + # and on FreeBSD. Unfortunately, the -f option (which follows + # a whole chain of symlinks until it reaches a non-symlink + # path name) is a GNUism, so we have to have a fallback for + # FreeBSD. Fortunately, FreeBSD has realpath instead; + # unfortunately, that's also non-POSIX and is not present in + # GNU coreutils. + # + # If this launcher were a C program, we could just use the + # realpath function, which *is* POSIX. Too bad POSIX didn't + # make that function accessible to shell scripts. + + # If realpath is available, use it; it Does The Right Thing. + possibly_my_real_name="`realpath "$myname" 2>/dev/null`" + if [ "$?" -eq 0 ]; then + myname="$possibly_my_real_name" + else + # realpath is not available; hopefully readlink -f works. + myname="`readlink -f "$myname" 2>/dev/null`" + if [ "$?" -ne 0 ]; then + # Ugh. + complain "start-[% c('var/project-name') %] cannot be run using a symlink on this operating system." + fi + fi fi -# Try to be agnostic to where we're being started from, chdir to where -# the script is. -mydir="`dirname "$myname"`" -test -d "$mydir" && cd "$mydir" +cd "$(dirname "$myname")" +browser_dir="$(pwd)" +if test -f "$browser_dir/is-packaged-app"; then + system_install=1 + browser_home="$HOME/.[% pc('linux-packages', 'var/system_pkg/pkg_name') %]" + mkdir -p "$browser_home" + cd "$browser_home" +else + browser_home="$browser_dir" +fi # If ${PWD} results in a zero length string, we can try something else... if [ ! "${PWD}" ]; then - # "hacking around some braindamage" - PWD="`pwd`" - surveysays="This system has a messed up shell.\n" + # "hacking around some braindamage" + PWD="`pwd`" + surveysays="This system has a messed up shell.\n" fi # This is a fix for an ibus issue on some Linux systems. See #9353 for more @@ -227,46 +235,48 @@ if [ ! -d ".config/ibus" ]; then ln -nsf ~/.config/ibus/bus .config/ibus fi -# Fix up .desktop Icon and Exec Paths, and update the .desktop file from the -# canonical version if it was changed by the updater. -cp start-[% c('var/project-name') %].desktop ../ -sed -i -e "s,^Name=.*,Name=[% c('var/Project_Name') %],g" ../start-[% c('var/project-name') %].desktop -sed -i -e "s,^Icon=.*,Icon=$PWD/browser/chrome/icons/default/default128.png,g" ../start-[% c('var/project-name') %].desktop -sed -i -e "s,^Icon=.*,Icon=$PWD/browser/chrome/icons/default/default128.png,g" start-[% c('var/project-name') %].desktop -sed -i -e "s,^Exec=.*,Exec=sh -c '\"$PWD/start-[% c('var/project-name') %]\" --detach || ([ ! -x \"$PWD/start-[% c('var/project-name') %]\" ] \&\& \"\$(dirname \"\$*\")\"/Browser/start-[% c('var/project-name') %] --detach)' dummy %k,g" ../start-[% c('var/project-name') %].desktop - -if [ "$register_desktop_app" -eq 1 ]; then - mkdir -p "$HOME/.local/share/applications/" - cp ../start-[% c('var/project-name') %].desktop "$HOME/.local/share/applications/" - update-desktop-database "$HOME/.local/share/applications/" - printf "[% c('var/Project_Name') %] has been registered as a desktop app for this user in ~/.local/share/applications/\n" - exit 0 -fi - -if [ "$register_desktop_app" -eq -1 ]; then - if [ -e "$HOME/.local/share/applications/start-[% c('var/project-name') %].desktop" ]; then - rm -f "$HOME/.local/share/applications/start-[% c('var/project-name') %].desktop" - update-desktop-database "$HOME/.local/share/applications/" - printf "[% c('var/Project_Name') %] has been removed as a user desktop app (from ~/.local/share/applications/)\n" - else - printf "[% c('var/Project_Name') %] does not appear to be a desktop app (not present in ~/.local/share/applications/)\n" - fi - exit 0 +if test -z "$system_install"; then + # Fix up .desktop Icon and Exec Paths, and update the .desktop file from the + # canonical version if it was changed by the updater. + cp start-[% c('var/project-name') %].desktop ../ + sed -i -e "s,^Name=.*,Name=[% c('var/Project_Name') %],g" ../start-[% c('var/project-name') %].desktop + sed -i -e "s,^Icon=.*,Icon=$PWD/browser/chrome/icons/default/default128.png,g" ../start-[% c('var/project-name') %].desktop + sed -i -e "s,^Icon=.*,Icon=$PWD/browser/chrome/icons/default/default128.png,g" start-[% c('var/project-name') %].desktop + sed -i -e "s,^Exec=.*,Exec=sh -c '\"$PWD/start-[% c('var/project-name') %]\" --detach || ([ ! -x \"$PWD/start-[% c('var/project-name') %]\" ] \&\& \"\$(dirname \"\$*\")\"/Browser/start-[% c('var/project-name') %] --detach)' dummy %k,g" ../start-[% c('var/project-name') %].desktop + + if [ "$register_desktop_app" -eq 1 ]; then + mkdir -p "$HOME/.local/share/applications/" + cp ../start-[% c('var/project-name') %].desktop "$HOME/.local/share/applications/" + update-desktop-database "$HOME/.local/share/applications/" + printf "[% c('var/Project_Name') %] has been registered as a desktop app for this user in ~/.local/share/applications/\n" + exit 0 + fi + + if [ "$register_desktop_app" -eq -1 ]; then + if [ -e "$HOME/.local/share/applications/start-[% c('var/project-name') %].desktop" ]; then + rm -f "$HOME/.local/share/applications/start-[% c('var/project-name') %].desktop" + update-desktop-database "$HOME/.local/share/applications/" + printf "[% c('var/Project_Name') %] has been removed as a user desktop app (from ~/.local/share/applications/)\n" + else + printf "[% c('var/Project_Name') %] does not appear to be a desktop app (not present in ~/.local/share/applications/)\n" + fi + exit 0 + fi fi export BB_ORIGINAL_HOME="$HOME" -HOME="${PWD}" +HOME="$browser_home" export HOME # Prevent disk leaks in $HOME/.local/share (tor-browser#17560) function erase_leaky() { - local leaky="$1" - [ -e "$leaky" ] && - ( srm -r "$leaky" || - wipe -r "$leaky" || - find "$leaky" -type f -exec shred -u {} \; ; - rm -rf "$leaky" - ) > /dev/null 2>&1 + local leaky="$1" + [ -e "$leaky" ] && + ( srm -r "$leaky" || + wipe -r "$leaky" || + find "$leaky" -type f -exec shred -u {} \; ; + rm -rf "$leaky" + ) > /dev/null 2>&1 } local_dir="$HOME/.local/" share_dir="$local_dir/share" @@ -275,14 +285,14 @@ share_dir="$local_dir/share" # We're not using realpath/readlink for consistency with the (possibly # outdated) availability assumptions made elsewhere in this script. if ! [ -L "$local_dir" -o -L "$share_dir" ]; then - if [ -d "$share_dir" ]; then - for leaky_path in "gvfs-metadata" "recently-used.xbel"; do - erase_leaky "$share_dir/$leaky_path" - done - else - mkdir -p "$local_dir" - fi - ln -fs /dev/null "$share_dir" + if [ -d "$share_dir" ]; then + for leaky_path in "gvfs-metadata" "recently-used.xbel"; do + erase_leaky "$share_dir/$leaky_path" + done + else + mkdir -p "$local_dir" + fi + ln -fs /dev/null "$share_dir" fi [ -L "$HOME/.cache" ] || erase_leaky "$HOME/.cache/nvidia" @@ -291,8 +301,8 @@ SYSARCHITECTURE=$(getconf LONG_BIT) TORARCHITECTURE=$(expr "$(file TorBrowser/Tor/tor)" : '.*ELF \([[:digit:]]*\)') if [ $SYSARCHITECTURE -ne $TORARCHITECTURE ]; then - complain "Wrong architecture? 32-bit vs. 64-bit." - exit 1 + complain "Wrong architecture? 32-bit vs. 64-bit." + exit 1 fi [% END -%] @@ -305,27 +315,27 @@ export ASAN_OPTIONS [% IF c("var/tor-browser") -%] function setControlPortPasswd() { - local ctrlPasswd=$1 - - if test -z "$ctrlPasswd" -o "$ctrlPasswd" = $'\"secret\"' ; then - unset TOR_CONTROL_PASSWD - return - fi - - if test "${ctrlPasswd:0:1}" = $'\"'; then # First 2 chars were '" - printf "Using system Tor process.\n" - export TOR_CONTROL_PASSWD - else - complain "There seems to have been a quoting problem with your \ + local ctrlPasswd=$1 + + if test -z "$ctrlPasswd" -o "$ctrlPasswd" = $'\"secret\"' ; then + unset TOR_CONTROL_PASSWD + return + fi + + if test "${ctrlPasswd:0:1}" = $'\"'; then # First 2 chars were '" + printf "Using system Tor process.\n" + export TOR_CONTROL_PASSWD + else + complain "There seems to have been a quoting problem with your \ TOR_CONTROL_PASSWD environment variable." - echo "The Tor ControlPort password should be given inside double" - echo "quotes, inside single quotes. That is, if the ControlPort" - echo 'password is “secret” (without curly quotes) then we must' - echo "start this script after setting the environment variable" - echo "exactly like this:" - echo - echo " \$ TOR_CONTROL_PASSWD='\"secret\"' $myname" - fi + echo "The Tor ControlPort password should be given inside double" + echo "quotes, inside single quotes. That is, if the ControlPort" + echo 'password is “secret” (without curly quotes) then we must' + echo "start this script after setting the environment variable" + echo "exactly like this:" + echo + echo " \$ TOR_CONTROL_PASSWD='\"secret\"' $myname" + fi } # Using a system-installed Tor process with Tor Browser: @@ -367,7 +377,7 @@ setControlPortPasswd ${TOR_CONTROL_PASSWD:='"secret"'} [% END -%] # Set up custom bundled fonts. See fonts-conf(5). -export FONTCONFIG_PATH="${HOME}/fontconfig" +export FONTCONFIG_PATH="$browser_dir/fontconfig" export FONTCONFIG_FILE="fonts.conf" [% # tor-browser#41776: We cannot make the updater remove this file. # So, let's remove it on this script, since we know that at this point the @@ -397,19 +407,19 @@ cd "${HOME}" # prevent from mixing up with them). if [ "$show_usage" -eq 1 ]; then - # Display Firefox help, then our help - [% IF c("var/tor-browser") %]TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD}[% END %] ./[% c('var/exe_name') %] --help 2>/dev/null - print_usage + # Display Firefox help, then our help + [% IF c("var/tor-browser") %]TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD}[% END %] "$browser_dir"/[% c('var/exe_name') %] --help 2>/dev/null + print_usage elif [ "$detach" -eq 1 ] ; then - [% IF c("var/tor-browser") %]TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD}[% END %] ./[% c('var/exe_name') %] "${@}" > "$logfile" 2>&1 </dev/null & - disown "$!" + [% IF c("var/tor-browser") %]TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD}[% END %] "$browser_dir"/[% c('var/exe_name') %] "${@}" > "$logfile" 2>&1 </dev/null & + disown "$!" elif [ "$log_output" -eq 1 -a "$show_output" -eq 1 ]; then - [% IF c("var/tor-browser") %]TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD}[% END %] ./[% c('var/exe_name') %] "${@}" 2>&1 </dev/null | \ - tee "$logfile" + [% IF c("var/tor-browser") %]TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD}[% END %] "$browser_dir"/[% c('var/exe_name') %] "${@}" 2>&1 </dev/null | \ + tee "$logfile" elif [ "$show_output" -eq 1 ]; then - [% IF c("var/tor-browser") %]TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD}[% END %] ./[% c('var/exe_name') %] "${@}" < /dev/null + [% IF c("var/tor-browser") %]TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD}[% END %] "$browser_dir"/[% c('var/exe_name') %] "${@}" < /dev/null else - [% IF c("var/tor-browser") %]TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD}[% END %] ./[% c('var/exe_name') %] "${@}" > "$logfile" 2>&1 </dev/null + [% IF c("var/tor-browser") %]TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD}[% END %] "$browser_dir"/[% c('var/exe_name') %] "${@}" > "$logfile" 2>&1 </dev/null fi exit $? ===================================== projects/browser/config ===================================== @@ -14,7 +14,9 @@ var: mar_osname: '[% c("var/osname") %]' version_json: version.json + targets: + linux: var: arch_deps: @@ -23,6 +25,7 @@ targets: # share the container to reduce space used. - libc6-i386 pt_path: ./TorBrowser/Tor/PluggableTransports/ + macos: var: arch_deps: @@ -32,14 +35,17 @@ targets: - python3-distutils-extra - python3-psutil pt_path: PluggableTransports/ + macos-universal: var: mar_osname: macos + windows: var: arch_deps: - python3-pefile pt_path: TorBrowser\Tor\PluggableTransports\ + android: build: '[% INCLUDE build.android %]' var: @@ -53,17 +59,21 @@ targets: # apksigner. suite: bookworm arch: amd64 + torbrowser: var: prefs_file: 000-tor-browser.js version_json: tbb_version.json + basebrowser: var: prefs_file: 001-base-profile.js + mullvadbrowser: var: prefs_file: 001-base-profile.js + input_files: - project: container-image - project: firefox ===================================== projects/linux-packages/Makefile.in ===================================== @@ -0,0 +1,7 @@ +build: + rm -f "${DEB_TARGET_ARCH}/Browser/start-[% c('var/project-name') %].desktop" + echo 'This is a packaged app.' > "${DEB_TARGET_ARCH}/Browser/is-packaged-app" + [% c("touch") %] "${DEB_TARGET_ARCH}/Browser/is-packaged-app" + +clean: + rm -f "${DEB_TARGET_ARCH}/Browser/is-packaged-app" ===================================== projects/linux-packages/build ===================================== @@ -0,0 +1,55 @@ +#!/bin/bash +[% c("var/set_default_env") -%] +distdir=/var/tmp/dist/[% project %] + +OUTDIR='[% dest_dir _ "/" _ c("filename") %]' +mkdir -p $OUTDIR +mkdir -p "$distdir" + +export SOURCE_DATE_EPOCH='[% c("timestamp") %]' + +[% IF c("var/build_deb_pkg") -%] + cd $distdir + project_dir=[% c("var/system_pkg/pkg_name") %]-[% c("var/system_pkg/pkg_version") %] + mkdir "$project_dir" + mv $rootdir/Makefile "$project_dir" + [% c('tar', { + tar_src => [ '$project_dir' ], + tar_args => '-cJf ' _ c("var/system_pkg/pkg_name") _ '_' _ c("var/system_pkg/pkg_version") _ '.orig.tar.xz', + }) %] + + cd "$project_dir" + mv $rootdir/debian . + chmod +x debian/install debian/docs debian/rules + mkdir debian/source + echo -n '3.0 (quilt)' > debian/source/format + + + function extract_src_tar { + src_tar="$1" + deb_arch="$2" + mkdir $deb_arch + tar -C $deb_arch --strip-components=1 -xf "$src_tar" + mv "$src_tar" \ + ../[% c("var/system_pkg/pkg_name") %]_[% c("var/system_pkg/pkg_version") %].orig-$deb_arch.tar.xz + } + [% IF c("var/browser-linux-x86_64") -%] + extract_src_tar \ + $rootdir/[% c('input_files_by_name/linux-x86_64') %]/[% c("var/project-name") %]-linux-x86_64-[% c("version") %].tar.xz \ + amd64 + [% END -%] + [% IF c("var/browser-linux-i686") -%] + extract_src_tar \ + $rootdir/[% c('input_files_by_name/linux-x86_64') %]/[% c("var/project-name") %]-linux-i686-[% c("version") %].tar.xz \ + i386 + [% END -%] + + [% FOREACH deb_arch = c("var_p/system_pkg/deb_archs") -%] + dpkg-buildpackage --unsigned-source --unsigned-changes --build=full --host-arch=[% deb_arch %] + deb_file_name='[% c("var/system_pkg/pkg_name") %]_[% c("var/system_pkg/pkg_version") %]-[% c("var/system_pkg/pkg_revision") %]_[% deb_arch %].deb' + dpkg-deb --info "../$deb_file_name" + pushd .. + mv -f "$deb_file_name" *.dsc *.orig.tar.xz *.debian.tar.xz "$OUTDIR/" + popd + [% END -%] +[% END %] ===================================== projects/linux-packages/config ===================================== @@ -0,0 +1,157 @@ +# vim: filetype=yaml sw=2 +version: '[% c("var/torbrowser_version") %]' +filename: '[% c("var/project-name") %]-[% c("version") %]-[% c("var/build_id") %]' +timestamp: '[% c("var/browser_release_date_timestamp") %]' +container: + use_container: 1 + +var: + build_deb_pkg: '[% c("var/mullvad-browser") %]' + system_pkg: + install_path: 'usr/lib/[% c("var/system_pkg/pkg_name") %]' + pkg_name: '[% c("var/project-name") %]-[% c("var/channel") %]' + pkg_version: '[% c("var/torbrowser_version") %]-[% c("var/torbrowser_build") %]' + pkg_revision: '1' + pkg_description: '[% c("var/display_name") %]' + deb_release_date: '[% USE date; date.format(c("timestamp"), format = "%a, %d %b %Y 01:02:03 +0000", locale = "en_US") %]' + # Use var_p/system_pkg/deb_archs for the processed list + deb_archs_list: + - '[% IF c("var/browser-linux-x86_64") %]amd64[% END %]' + - '[% IF c("var/browser-linux-i686") %]i386[% END %]' + + arch_deps: + # Packages needed to build the deb package + - dpkg-dev + - debhelper + - dh-exec + # Packages needed to generate dependencies for the deb package + - linux-libc-dev + - libasound2-dev + - libfontconfig1-dev + - libfreetype6-dev + - libgconf2-dev + - libgtk-3-dev + - libpango1.0-dev + - libpulse-dev + - libx11-xcb-dev + - libxt-dev + +targets: + + browser-all: + - browser-linux-x86_64 + - browser-linux-i686 + + browser-all-desktop: browser-all + + browser-linux-x86_64: + var: + browser-linux-x86_64: 1 + browser-linux-i686: + var: + browser-linux-i686: '[% c("var/browser_type") != "mullvadbrowser" %]' + + torbrowser: + var: + browser_type: torbrowser + basebrowser: + var: + browser_type: basebrowser + mullvadbrowser: + var: + browser_type: mullvadbrowser + system_pkg: + pkg_description: 'Mullvad Browser is a privacy-focused web browser designed to minimize tracking and fingerprinting.' + + release: + var: + build_target: release + system_pkg: + pkg_name: '[% c("var/project-name") %]' + nightly: + var: + build_target: nightly + system_pkg: + # debian package version needs to start with a number + pkg_version: '[% pc("firefox", "var/browser_series") %]~[% c("var/torbrowser_version") FILTER remove("tbb-nightly.") %]' + alpha: + var: + build_target: alpha + testbuild: + var: + testbuild: 1 + build_target: '[% c("var/browser_type") %]-testbuild' + + +input_files: + + - project: container-image + + - name: linux-x86_64 + project: browser + enable: '[% c("var/browser-linux-x86_64") %]' + target: + - '[% c("var/build_target") %]' + - '[% c("var/browser_type") %]-linux-x86_64' + + - name: linux-i686 + project: browser + enable: '[% c("var/browser-linux-i686") %]' + target: + - '[% c("var/build_target") %]' + - '[% c("var/browser_type") %]-linux-i686' + + - filename: Makefile + content: "[% INCLUDE 'Makefile.in' %]" + refresh_input: 1 + + # Debian Package + - filename: debian/changelog + content: "[% INCLUDE 'debian/changelog.in' %]" + refresh_input: 1 + enable: '[% c("var/build_deb_pkg") %]' + - filename: debian/compat + enable: '[% c("var/build_deb_pkg") %]' + - filename: debian/control + content: "[% INCLUDE 'debian/control.in' %]" + refresh_input: 1 + enable: '[% c("var/build_deb_pkg") %]' + - filename: debian/copyright + content: "[% INCLUDE 'debian/copyright.in' %]" + refresh_input: 1 + enable: '[% c("var/build_deb_pkg") %]' + - filename: debian/install + content: "[% INCLUDE 'debian/install.in' %]" + refresh_input: 1 + enable: '[% c("var/build_deb_pkg") %]' + - filename: debian/docs + content: "[% INCLUDE 'debian/docs.in' %]" + refresh_input: 1 + enable: '[% c("var/build_deb_pkg") %]' + - filename: 'debian/[% c("var/system_pkg/pkg_name") %].desktop' + content: "[% INCLUDE 'debian/browser.desktop.in' %]" + refresh_input: 1 + enable: '[% c("var/build_deb_pkg") %]' + - filename: debian/links + content: "[% INCLUDE 'debian/links.in' %]" + refresh_input: 1 + enable: '[% c("var/build_deb_pkg") %]' + - filename: debian/rules + enable: '[% c("var/build_deb_pkg") %]' + +--- | + # This part of the file contains options written in perl + ( + var_p => { + system_pkg => { + deb_archs => sub { + my ($project, $options) = @_; + my $deb_archs = project_config($project, + 'var/system_pkg/deb_archs_list', $options); + return [ + grep { $_ } map { process_template($project, $_, '.') } @$deb_archs + ]; + }, + }, + }, + ) ===================================== projects/linux-packages/debian/browser.desktop.in ===================================== @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Application +Name=[% c("var/Project_Name") %] +GenericName=Web Browser +Comment=[% c("var/system_pkg/pkg_description") %] +Categories=Network;WebBrowser;Security; +Exec=/[% c("var/system_pkg/install_path") %]/start-[% c("var/project-name") %] --detach +X-[% c("var/ProjectName") %]-ExecShell=/[% c("var/system_pkg/install_path") %]/start-[% c("var/project-name") %] --detach +Icon=[% c("var/system_pkg/pkg_name") %] +StartupWMClass=[% c("var/display_name") %] ===================================== projects/linux-packages/debian/changelog.in ===================================== @@ -0,0 +1,5 @@ +[% c("var/system_pkg/pkg_name") %] ([% c("var/system_pkg/pkg_version") %]-[% c("var/system_pkg/pkg_revision") %]) UNRELEASED; urgency=medium + + * [% c("var/Project_Name") %] [% c("var/torbrowser_version") %] + + -- [% c("var/Project_Name") %] Developers <torbrowser(a)torproject.org> [% c("var/system_pkg/deb_release_date") %] ===================================== projects/linux-packages/debian/compat ===================================== @@ -0,0 +1 @@ +9 ===================================== projects/linux-packages/debian/control.in ===================================== @@ -0,0 +1,11 @@ +Source: [% c("var/system_pkg/pkg_name") %] +Maintainer: [% c("var/Project_Name") %] Developers <torbrowser(a)torproject.org> +Priority: optional +Section: web +Build-Depends: debhelper (>= 9) + +Package: [% c("var/system_pkg/pkg_name") %] +Architecture: [% c("var_p/system_pkg/deb_archs").join(" ") %] +Depends: ${shlibs:Depends}, +Description: [% c('var/display_name') %] + [% c("var/system_pkg/pkg_description") %] ===================================== projects/linux-packages/debian/copyright.in ===================================== @@ -0,0 +1,10 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Source:: https://gitlab.torproject.org/tpo/applications/tor-browser-build/ +Upstream-Name: [% c("var/Project_Name") %] +Comment: + License for the build recipes and tools used for building [% c("var/Project_Name") %] + can be found at this URL: + https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/blob/mai… + For the license of specific components included in [% c("var/Project_Name") %], see + this directory: + /usr/share/doc/[% c("var/system_pkg/pkg_name") %]/Licenses ===================================== projects/linux-packages/debian/docs.in ===================================== @@ -0,0 +1,3 @@ +#! /usr/bin/dh-exec +${DEB_HOST_ARCH}/Browser/[% c("var/ProjectName") %]/Docs/ChangeLog.txt +${DEB_HOST_ARCH}/Browser/[% c("var/ProjectName") %]/Docs/Licenses/ ===================================== projects/linux-packages/debian/install.in ===================================== @@ -0,0 +1,3 @@ +#! /usr/bin/dh-exec +${DEB_HOST_ARCH}/Browser/* [% c("var/system_pkg/install_path") %] +debian/[% c("var/system_pkg/pkg_name") %].desktop usr/share/applications ===================================== projects/linux-packages/debian/links.in ===================================== @@ -0,0 +1,7 @@ +[% c("var/system_pkg/install_path") %]/start-[% c("var/project-name") %] usr/bin/[% c("var/system_pkg/pkg_name") %] +[% c("var/system_pkg/install_path") %]/browser/chrome/icons/default/default16.png usr/share/icons/hicolor/16x16/apps/[% c("var/system_pkg/pkg_name") %].png +[% c("var/system_pkg/install_path") %]/browser/chrome/icons/default/default32.png usr/share/icons/hicolor/32x32/apps/[% c("var/system_pkg/pkg_name") %].png +[% c("var/system_pkg/install_path") %]/browser/chrome/icons/default/default48.png usr/share/icons/hicolor/48x48/apps/[% c("var/system_pkg/pkg_name") %].png +[% c("var/system_pkg/install_path") %]/browser/chrome/icons/default/default64.png usr/share/icons/hicolor/64x64/apps/[% c("var/system_pkg/pkg_name") %].png +[% c("var/system_pkg/install_path") %]/browser/chrome/icons/default/default128.png usr/share/icons/hicolor/128x128/apps/[% c("var/system_pkg/pkg_name") %].png +[% c("var/system_pkg/install_path") %]/browser/chrome/icons/default/about-logo.svg usr/share/icons/hicolor/scalable/apps/[% c("var/system_pkg/pkg_name") %].svg ===================================== projects/linux-packages/debian/rules ===================================== @@ -0,0 +1,10 @@ +#!/usr/bin/make -f + +%: + dh $@ + +override_dh_strip_nondeterminism: + dh_strip_nondeterminism -Xxpi + +override_dh_shlibdeps: + dh_shlibdeps -Xabicheck ===================================== projects/release/build ===================================== @@ -37,6 +37,9 @@ mkdir -p "$destdir" [% IF c("var/browser-linux-x86_64") -%] mv [% c('input_files_by_name/linux-x86_64') %]/* "$destdir"/ [% END -%] +[% IF c("var/linux-packages") -%] + mv [% c('input_files_by_name/linux-packages') %]/* "$destdir"/ +[% END -%] [% IF c("var/browser-src") -%] mv [% c('input_files_by_name/src-firefox') %] \ "$destdir"/ @@ -59,7 +62,7 @@ EOF # empty any existing sh256sums file echo -n > sha256sums-unsigned-build.txt # concat sha256sum entry for each file in set -for i in $(ls -1 *.exe *.tar.xz *.dmg *.mar *.zip *.tar.gz *.apk *.bspatch *.json | grep -v '\.incremental\.mar$' | sort) +for i in $(ls -1 *.exe *.tar.xz *.dmg *.mar *.zip *.tar.gz *.apk *.bspatch *.json *.deb | grep -v '\.incremental\.mar$' | sort) do sha256sum $i >> sha256sums-unsigned-build.txt done ===================================== projects/release/config ===================================== @@ -47,6 +47,7 @@ targets: browser-linux-x86_64: var: browser-linux-x86_64: 1 + linux-packages: '[% c("var/mullvad-browser") %]' browser-linux-x86_64-asan: var: browser-linux-x86_64: 1 @@ -54,6 +55,7 @@ targets: browser-linux-i686: var: browser-linux-i686: '[% c("var/browser_type") != "mullvadbrowser" %]' + linux-packages: '[% c("var/mullvad-browser") %]' browser-windows-i686: var: browser-windows-i686: '[% c("var/browser_type") != "mullvadbrowser" %]' @@ -186,6 +188,14 @@ input_files: - '[% c("var/build_target") %]' - '[% c("var/browser_type") %]-linux-i686' + - name: linux-packages + project: linux-packages + enable: '[% c("var/linux-packages") %]' + # Add linux-x86_64 targets for container config + target_prepend: + - linux-x86_64 + - linux + - name: windows-i686 project: browser enable: '[% c("var/browser-windows-i686") %]' ===================================== rbm ===================================== @@ -1 +1 @@ -Subproject commit 10c6b24e90e3dc9c2578290a7d82a87b7f4eb9a3 +Subproject commit 05e32169dfad9f3cc3eb6aa3f93d9b7a1690290e View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/… -- This project does not include diff previews in email notifications. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] 4 commits: fixup! Bug 2176: Rebrand Firefox to TorBrowser
by Pier Angelo Vendrame (@pierov) 22 Apr '24

22 Apr '24
Pier Angelo Vendrame pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: fd8774a0 by Henry Wilkes at 2024-04-22T17:33:16+01:00 fixup! Bug 2176: Rebrand Firefox to TorBrowser Bug 42538: Move onion icons to toolkit. - - - - - 916196f7 by Henry Wilkes at 2024-04-22T17:33:16+01:00 fixup! Bug 21952: Implement Onion-Location Bug 42538: Move onion icons to toolkit. - - - - - 09294f1b by Henry Wilkes at 2024-04-22T17:33:17+01:00 fixup! Bug 23247: Communicating security expectations for .onion Bug 42538: Move onion icons to toolkit. - - - - - 07ec5817 by Henry Wilkes at 2024-04-22T17:33:17+01:00 fixup! Bug 30237: Add v3 onion services client authentication prompt Bug 42538: Move onion icons to toolkit. - - - - - 8 changed files: - browser/components/onionservices/content/onionlocation.css - browser/themes/shared/identity-block/identity-block.css - browser/themes/shared/jar.inc.mn - toolkit/themes/shared/aboutNetError.css - toolkit/themes/shared/desktop-jar.inc.mn - browser/themes/shared/identity-block/onion-site.svg → toolkit/themes/shared/icons/onion-site.svg - browser/themes/shared/identity-block/onion-slash.svg → toolkit/themes/shared/icons/onion-slash.svg - browser/themes/shared/identity-block/onion-warning.svg → toolkit/themes/shared/icons/onion-warning.svg Changes: ===================================== browser/components/onionservices/content/onionlocation.css ===================================== @@ -1,7 +1,7 @@ /* Copyright (c) 2020, The Tor Project, Inc. */ #onion-location-button { - list-style-image: url(chrome://browser/skin/onion-site.svg); + list-style-image: url(chrome://global/skin/icons/onion-site.svg); -moz-context-properties: fill; fill: currentColor; } ===================================== browser/themes/shared/identity-block/identity-block.css ===================================== @@ -195,14 +195,14 @@ #identity-box[pageproxystate="valid"].onionUnknownIdentity #identity-icon, #identity-box[pageproxystate="valid"].onionVerifiedDomain #identity-icon, #identity-box[pageproxystate="valid"].onionMixedActiveBlocked #identity-icon { - list-style-image: url(chrome://browser/skin/onion-site.svg); + list-style-image: url(chrome://global/skin/icons/onion-site.svg); visibility: visible; } #identity-box[pageproxystate="valid"].onionMixedDisplayContent #identity-icon, #identity-box[pageproxystate="valid"].onionMixedDisplayContentLoadedActiveBlocked #identity-icon, #identity-box[pageproxystate="valid"].onionCertUserOverridden #identity-icon { - list-style-image: url(chrome://browser/skin/onion-warning.svg); + list-style-image: url(chrome://global/skin/icons/onion-warning.svg); visibility: visible; /* onion-warning includes another context-stroke color. Here we want it to * match the context-fill color, which should be currentColor. */ @@ -211,7 +211,7 @@ } #identity-box[pageproxystate="valid"].onionMixedActiveContent #identity-icon { - list-style-image: url(chrome://browser/skin/onion-slash.svg); + list-style-image: url(chrome://global/skin/icons/onion-slash.svg); visibility: visible; } ===================================== browser/themes/shared/jar.inc.mn ===================================== @@ -70,9 +70,6 @@ skin/classic/browser/downloads/progressmeter.css (../shared/downloads/progressmeter.css) skin/classic/browser/drm-icon.svg (../shared/drm-icon.svg) skin/classic/browser/identity-block/identity-block.css (../shared/identity-block/identity-block.css) - skin/classic/browser/onion-site.svg (../shared/identity-block/onion-site.svg) - skin/classic/browser/onion-slash.svg (../shared/identity-block/onion-slash.svg) - skin/classic/browser/onion-warning.svg (../shared/identity-block/onion-warning.svg) skin/classic/browser/permissions.svg (../shared/identity-block/permissions.svg) skin/classic/browser/migration/migration-dialog-window.css (../shared/migration/migration-dialog-window.css) skin/classic/browser/migration/migration-wizard.css (../shared/migration/migration-wizard.css) ===================================== toolkit/themes/shared/aboutNetError.css ===================================== @@ -51,7 +51,7 @@ body.certerror .title { } body.onion-error .title { - background-image: url("chrome://browser/skin/onion-warning.svg"); + background-image: url("chrome://global/skin/icons/onion-warning.svg"); -moz-context-properties: fill, stroke; fill: currentColor; stroke: var(--warning-color); ===================================== toolkit/themes/shared/desktop-jar.inc.mn ===================================== @@ -91,6 +91,9 @@ skin/classic/global/icons/tor-dark-loading.png (../../shared/icons/tor-dark-loading.png) skin/classic/global/icons/tor-dark-loading(a)2x.png (../../shared/icons/tor-dark-loading(a)2x.png) skin/classic/global/icons/more.svg (../../shared/icons/more.svg) + skin/classic/global/icons/onion-site.svg (../../shared/icons/onion-site.svg) + skin/classic/global/icons/onion-slash.svg (../../shared/icons/onion-slash.svg) + skin/classic/global/icons/onion-warning.svg (../../shared/icons/onion-warning.svg) skin/classic/global/icons/open-in-new.svg (../../shared/icons/open-in-new.svg) skin/classic/global/icons/page-portrait.svg (../../shared/icons/page-portrait.svg) skin/classic/global/icons/page-landscape.svg (../../shared/icons/page-landscape.svg) ===================================== browser/themes/shared/identity-block/onion-site.svg → toolkit/themes/shared/icons/onion-site.svg ===================================== ===================================== browser/themes/shared/identity-block/onion-slash.svg → toolkit/themes/shared/icons/onion-slash.svg ===================================== ===================================== browser/themes/shared/identity-block/onion-warning.svg → toolkit/themes/shared/icons/onion-warning.svg ===================================== View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/d98ff1… -- This project does not include diff previews in email notifications. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/d98ff1… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.10.0esr-13.5-1] fixup! Bug 40926: Implemented the New Identity feature
by ma1 (@ma1) 22 Apr '24

22 Apr '24
ma1 pushed to branch mullvad-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser Commits: 04899df2 by hackademix at 2024-04-22T18:27:14+02:00 fixup! Bug 40926: Implemented the New Identity feature Bug 42532: Use the HomePage module for new identity checks. - - - - - 1 changed file: - browser/components/newidentity/content/newidentity.js Changes: ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -395,15 +395,12 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => { return new Promise(resolve => { // Open a new window forcing the about:privatebrowsing page (tor-browser#41765) // unless user explicitly overrides this policy (tor-browser #42236) - const homePref = "browser.startup.homepage"; const trustedHomePref = "browser.startup.homepage.new_identity"; - const homeURL = Services.prefs.getStringPref(homePref, ""); - const defaultHomeURL = Services.prefs - .getDefaultBranch("") - .getStringPref(homePref, ""); + const homeURL = HomePage.get(); + const defaultHomeURL = HomePage.getDefault(); const isTrustedHome = homeURL === defaultHomeURL || - homeURL.startsWith("chrome://") || // about:blank and other built-ins + homeURL === "chrome://browser/content/blanktab.html" || // about:blank homeURL === Services.prefs.getStringPref(trustedHomePref, ""); const isCustomHome = Services.prefs.getIntPref("browser.startup.page") === 1; View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/048… -- This project does not include diff previews in email notifications. View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/048… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-115.10.0esr-13.5-1] fixup! Bug 40926: Implemented the New Identity feature
by ma1 (@ma1) 22 Apr '24

22 Apr '24
ma1 pushed to branch base-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 5616a8da by hackademix at 2024-04-22T18:26:36+02:00 fixup! Bug 40926: Implemented the New Identity feature Bug 42532: Use the HomePage module for new identity checks. - - - - - 1 changed file: - browser/components/newidentity/content/newidentity.js Changes: ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -395,15 +395,12 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => { return new Promise(resolve => { // Open a new window forcing the about:privatebrowsing page (tor-browser#41765) // unless user explicitly overrides this policy (tor-browser #42236) - const homePref = "browser.startup.homepage"; const trustedHomePref = "browser.startup.homepage.new_identity"; - const homeURL = Services.prefs.getStringPref(homePref, ""); - const defaultHomeURL = Services.prefs - .getDefaultBranch("") - .getStringPref(homePref, ""); + const homeURL = HomePage.get(); + const defaultHomeURL = HomePage.getDefault(); const isTrustedHome = homeURL === defaultHomeURL || - homeURL.startsWith("chrome://") || // about:blank and other built-ins + homeURL === "chrome://browser/content/blanktab.html" || // about:blank homeURL === Services.prefs.getStringPref(trustedHomePref, ""); const isCustomHome = Services.prefs.getIntPref("browser.startup.page") === 1; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/5616a8d… -- This project does not include diff previews in email notifications. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/5616a8d… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 42535 (TB): Fix Japanese translation paths.
by Pier Angelo Vendrame (@pierov) 22 Apr '24

22 Apr '24
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 40425dd2 by Pier Angelo Vendrame at 2024-04-22T17:52:26+02:00 Bug 42535 (TB): Fix Japanese translation paths. When we setup packaged locales, it seemed that Japanese files needed to be in torbutton/locale/ja also for macOS, instead of ja-JP-mac. However, recently we saw that Firefox cannot find brand.ftl in ja, and the legacy files work also in ja-JP-mac. Maybe the initial tests were influenced by some cache. - - - - - 1 changed file: - projects/firefox/build Changes: ===================================== projects/firefox/build ===================================== @@ -133,15 +133,15 @@ mkdir "$HOME/.mozbuild" torbutton_locales="toolkit/torbutton/chrome/locale/" torbutton_jar="toolkit/torbutton/jar.mn" for lang in $supported_locales; do - central_lang=$lang + source_lang=$lang [% IF c("var/macos") -%] if [ "$lang" == "ja-JP-mac" ]; then - lang="ja" + source_lang="ja" fi [% END -%] - mv "$transl_tor_browser/$lang/tor-browser.ftl" "$l10ncentral/$central_lang/browser/browser/" - mv "$transl_tor_browser/$lang/cryptoSafetyPrompt.properties" "$l10ncentral/$central_lang/browser/chrome/browser/" - mv "$transl_tor_browser/$lang" "$torbutton_locales/" + mv "$transl_tor_browser/$source_lang/tor-browser.ftl" "$l10ncentral/$lang/browser/browser/" + mv "$transl_tor_browser/$source_lang/cryptoSafetyPrompt.properties" "$l10ncentral/$lang/browser/chrome/browser/" + mv "$transl_tor_browser/$source_lang" "$torbutton_locales/$lang" echo "% locale torbutton $lang %locale/$lang/" >> "$torbutton_jar" echo " locale/$lang (chrome/locale/$lang/*)" >> "$torbutton_jar" done View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4… -- This project does not include diff previews in email notifications. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] fixup! Bug 40926: Implemented the New Identity feature
by ma1 (@ma1) 22 Apr '24

22 Apr '24
ma1 pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: d98ff16e by hackademix at 2024-04-22T17:06:04+02:00 fixup! Bug 40926: Implemented the New Identity feature Bug 42532: Use the HomePage module for new identity checks. - - - - - 1 changed file: - browser/components/newidentity/content/newidentity.js Changes: ===================================== browser/components/newidentity/content/newidentity.js ===================================== @@ -395,15 +395,12 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => { return new Promise(resolve => { // Open a new window forcing the about:privatebrowsing page (tor-browser#41765) // unless user explicitly overrides this policy (tor-browser #42236) - const homePref = "browser.startup.homepage"; const trustedHomePref = "browser.startup.homepage.new_identity"; - const homeURL = Services.prefs.getStringPref(homePref, ""); - const defaultHomeURL = Services.prefs - .getDefaultBranch("") - .getStringPref(homePref, ""); + const homeURL = HomePage.get(); + const defaultHomeURL = HomePage.getDefault(); const isTrustedHome = homeURL === defaultHomeURL || - homeURL.startsWith("chrome://") || // about:blank and other built-ins + homeURL === "chrome://browser/content/blanktab.html" || // about:blank homeURL === Services.prefs.getStringPref(trustedHomePref, ""); const isCustomHome = Services.prefs.getIntPref("browser.startup.page") === 1; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d98ff16… -- This project does not include diff previews in email notifications. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d98ff16… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-115.10.0esr-13.5-1] fixup! Bug 9173: Change the default Firefox profile directory to be relative.
by Pier Angelo Vendrame (@pierov) 22 Apr '24

22 Apr '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser Commits: fd7362db by Pier Angelo Vendrame at 2024-04-22T16:37:11+02:00 fixup! Bug 9173: Change the default Firefox profile directory to be relative. Bug 42536: Fix !985 on macOS. - - - - - 1 changed file: - toolkit/xre/nsXREDirProvider.cpp Changes: ===================================== toolkit/xre/nsXREDirProvider.cpp ===================================== @@ -1323,6 +1323,7 @@ nsresult nsXREDirProvider::GetPortableDataDir(nsIFile** aFile, # if defined(XP_MACOSX) // On macOS we try to create the directory immediately to switch to // system-install mode if needed (e.g., when running from the DMG). + bool exists = false; rv = localDir->Exists(&exists); NS_ENSURE_SUCCESS(rv, rv); if (!exists) { View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/fd7… -- This project does not include diff previews in email notifications. View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/fd7… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
  • ← Newer
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • ...
  • 16
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.