commit: 077bcb531439cd1eec06af0bf6754fbd2bc99500
Author: Jory Pratt <anarchy <AT> gentoo <DOT> org>
AuthorDate: Thu Apr 18 10:55:09 2019 +0000
Commit: Jory Pratt <anarchy <AT> gentoo <DOT> org>
CommitDate: Thu Apr 18 10:55:09 2019 +0000
URL: https://gitweb.gentoo.org/proj/mozilla.git/commit/?id=077bcb53
www-client/torbrowser: misc cleanup to code, update fx patchset
Package-Manager: Portage-2.3.63, Repoman-2.3.12
Signed-off-by: Jory Pratt <anarchy <AT> gentoo.org>
www-client/torbrowser/Manifest | 2 +-
www-client/torbrowser/files/99torbrowser.example | 20 +
www-client/torbrowser/files/profile.cfg | 42 ++
...nge_the_default_Firefox_profile_directory.patch | 425 +++++++++++++++++++++
...0.5.0-Do_not_store_data_in_the_app_bundle.patch | 189 +++++++++
.../torbrowser-60.5.0-nss-fixup-warnings.patch | 25 ++
www-client/torbrowser/files/torbrowser-lto.patch | 32 --
.../torbrowser/files/torbrowser-profiledir.patch | 44 ---
.../files/torbrowser-rust_missing_docs.patch | 21 -
...build => torbrowser-60.6.1.8.0.8.1.1-r1.ebuild} | 117 +++---
10 files changed, 761 insertions(+), 156 deletions(-)
diff --git a/www-client/torbrowser/Manifest b/www-client/torbrowser/Manifest
index 3a1fff6..4f1ad0f 100644
--- a/www-client/torbrowser/Manifest
+++ b/www-client/torbrowser/Manifest
@@ -1,4 +1,4 @@
-DIST firefox-60.6-patches-01.tar.xz 14548 BLAKE2B
412059a6db015fff0985e637768426f877b33bb6b649c54f1292780b9d871f8fe9bf8e6b150ec36ab3647b4501fa6aec821c089a5d6fa861402f05e948f1a9d4
SHA512
b97da7a7b65bbf53cb6b9f48fc6c07a32cefa9d4b4a79ce57df047f941f5269e21bf09fa56a5f31bbf757ed2d76f8a1fe01d2306c92d20cab979e0a21f895e64
+DIST firefox-60.6-patches-05.tar.xz 35980 BLAKE2B
eea4ed2061f36b85bfa0677434f3acf478d9a58ed3130c2b2cab4dc78613e16ff481cc063d71525fc16b01be3cfe17a4a5dcd60c5070205246eb8b2b78387393
SHA512
3a591d68f5911c6547de24e73390478eb389f467a49f4010cd8c295569a09d878ffa2db4a072fe118c1195d1f0acf0adbb7540de14c367cb4cec522b4f1e4b05
DIST tor-browser-60.6.1esr-8.0-1-build1.tar.gz 386384151 BLAKE2B
18c9a07296317a0e62e40939c9b839850069836f9d489910fc364e1e2929a3218d3a2fc8a521a59d8971b925a09e0c29820a964bc326b0143480f2839b9f72cf
SHA512
9a39ed63494cd2be4952312d8160884f2fa35211f3ea54fc2e9dcc737236102938d8c17b3a112420d847b7c7e98d0f33f210afb3d0fd979e21f7e23769372b4b
DIST tor-browser-linux32-8.0.8_en-US.tar.xz 76761628 BLAKE2B
0c21f3c5718da9fcfe8961a59cd98be495411ea85200294f1918aa9c27af25428e18d7b8a52bab1c27360e6ded221ea981554b7f4130ccd646bc9edb53039f43
SHA512
ebd2b93bdaf87d34cb03ecc2d0811d376a3942de9ea84b6f049358127e91c76aaef4bdd7fcaa9467660e907f9ee5d3fd239f80d7a1667fea2e9b5fbb80355d42
DIST tor-browser-linux64-8.0.8_en-US.tar.xz 75228720 BLAKE2B
2e368225ca44868b700f1a6c8cb7a0f8f532adbca0f38d998741f5a8e24b76553ab861416724d0101b5b30a8bb305b96d308bfc6315619be4489a8f98ebc979a
SHA512
a046d56280b24c3a524b894b94ecacd876d27f732bcc1744a5b194684b1477fcb468e6978a20bee456242708e7f9a4e58a7e82e58f31ed3b84f652689cec546e
diff --git a/www-client/torbrowser/files/99torbrowser.example
b/www-client/torbrowser/files/99torbrowser.example
new file mode 100644
index 0000000..e138b30
--- /dev/null
+++ b/www-client/torbrowser/files/99torbrowser.example
@@ -0,0 +1,20 @@
+# /etc/env.d/99torbrowser
+#
+# The Tor ControlPort password should be given inside double quotes, inside
+# single quotes, i.e. if the ControlPort password is “secret” (without
+# curly quotes) then we must set the environment variable *exactly* like
+# this:
+# TOR_CONTROL_PASSWD='"secret"'
+# Yes, the variable MUST be double-quoted, then single-quoted, exactly as
+# shown. This is used by TorButton to authenticate to Tor's ControlPort, and
+# is necessary for using TB with a system-installed Tor
+
+#TOR_SOCKS_HOST=127.0.0.1
+#TOR_SOCKS_PORT=9150
+#TOR_SOCKS_IPC_PATH=/var/run/tor/socks
+
+#TOR_CONTROL_HOST=127.0.0.1
+#TOR_CONTROL_PORT=9151
+#TOR_CONTROL_PASSWD='"secret"'
+#TOR_CONTROL_COOKIE_AUTH_FILE=/var/run/tor/control.authcookie
+#TOR_CONTROL_IPC_PATH=/var/run/tor/control
diff --git a/www-client/torbrowser/files/profile.cfg
b/www-client/torbrowser/files/profile.cfg
new file mode 100644
index 0000000..d14309a
--- /dev/null
+++ b/www-client/torbrowser/files/profile.cfg
@@ -0,0 +1,42 @@
+//
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/FileUtils.jsm");
+
+var profileDir = Services.dirsvc.get("ProfD", Ci.nsIFile);
+var certDBFile = profileDir.clone();
+certDBFile.append("cert8.db")
+// If cert8.db isn't there, it's a new profile
+if (!certDBFile.exists()) {
+ var defaultProfileDir = Services.dirsvc.get("GreD", Ci.nsIFile);
+ defaultProfileDir.append("defaults");
+ defaultProfileDir.append("profile");
+ try {
+ copyDir(defaultProfileDir, profileDir);
+ } catch (e) {
+ Components.utils.reportError(e);
+ }
+}
+
+function copyDir(aOriginal, aDestination) {
+ var enumerator = aOriginal.directoryEntries;
+ while (enumerator.hasMoreElements()) {
+ var file =
enumerator.getNext().QueryInterface(Components.interfaces.nsIFile);
+ if (file.isDirectory()) {
+ var subdir = aDestination.clone();
+ subdir.append(file.leafName);
+ try {
+ subdir.create(Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY);
+ copyDir(file, subdir);
+ } catch (e) {
+ Components.utils.reportError(e);
+ }
+ } else {
+ try {
+ file.copyTo(aDestination, null);
+ } catch (e) {
+ Components.utils.reportError(e);
+ }
+ }
+ }
+}
diff --git
a/www-client/torbrowser/files/torbrowser-60.5.0-Change_the_default_Firefox_profile_directory.patch
b/www-client/torbrowser/files/torbrowser-60.5.0-Change_the_default_Firefox_profile_directory.patch
new file mode 100644
index 0000000..3559402
--- /dev/null
+++
b/www-client/torbrowser/files/torbrowser-60.5.0-Change_the_default_Firefox_profile_directory.patch
@@ -0,0 +1,425 @@
+From e5b0afd7fee16e7f755095b8b85296fe401fb04d Mon Sep 17 00:00:00 2001
+From: Poncho <[email protected]>
+Date: Wed, 30 Jan 2019 09:55:48 +0100
+Subject: [PATCH 2/4] Revert "Bug 9173: Change the default Firefox profile
+ directory to be TBB-relative."
+
+This reverts commit b82691c60b6a3ade6939b0f68f28de1e3c120292.
+---
+ toolkit/xre/nsXREDirProvider.cpp | 147 +++++++++++++++++++------
+ toolkit/xre/nsXREDirProvider.h | 12 +-
+ xpcom/io/nsAppFileLocationProvider.cpp | 97 ++++++++++------
+ 3 files changed, 181 insertions(+), 75 deletions(-)
+
+diff --git a/toolkit/xre/nsXREDirProvider.cpp
b/toolkit/xre/nsXREDirProvider.cpp
+index dbbaffd2a15f..00ee37ce9b5f 100644
+--- a/toolkit/xre/nsXREDirProvider.cpp
++++ b/toolkit/xre/nsXREDirProvider.cpp
+@@ -32,7 +32,6 @@
+ #include "nsArrayEnumerator.h"
+ #include "nsEnumeratorUtils.h"
+ #include "nsReadableUtils.h"
+-#include "nsXPCOMPrivate.h" // for XPCOM_FILE_PATH_SEPARATOR
+
+ #include "SpecialSystemDirectory.h"
+
+@@ -215,6 +214,9 @@ nsresult
nsXREDirProvider::GetUserProfilesRootDir(nsIFile** aResult) {
+ nsresult rv = GetUserDataDirectory(getter_AddRefs(file), false);
+
+ if (NS_SUCCEEDED(rv)) {
++#if !defined(XP_UNIX) || defined(XP_MACOSX)
++ rv = file->AppendNative(NS_LITERAL_CSTRING("Profiles"));
++#endif
+ // We must create the profile directory here if it does not exist.
+ nsresult tmp = EnsureDirectoryExists(file);
+ if (NS_FAILED(tmp)) {
+@@ -230,6 +232,9 @@ nsresult
nsXREDirProvider::GetUserProfilesLocalDir(nsIFile** aResult) {
+ nsresult rv = GetUserDataDirectory(getter_AddRefs(file), true);
+
+ if (NS_SUCCEEDED(rv)) {
++#if !defined(XP_UNIX) || defined(XP_MACOSX)
++ rv = file->AppendNative(NS_LITERAL_CSTRING("Profiles"));
++#endif
+ // We must create the profile directory here if it does not exist.
+ nsresult tmp = EnsureDirectoryExists(file);
+ if (NS_FAILED(tmp)) {
+@@ -1332,42 +1337,84 @@ nsresult nsXREDirProvider::GetProfileDir(nsIFile**
aResult) {
+ nsresult nsXREDirProvider::GetUserDataDirectoryHome(nsIFile** aFile,
+ bool aLocal) {
+ // Copied from nsAppFileLocationProvider (more or less)
+- NS_ENSURE_ARG_POINTER(aFile);
++ nsresult rv;
+ nsCOMPtr<nsIFile> localDir;
+
+- nsresult rv = GetAppDir()->Clone(getter_AddRefs(localDir));
+- NS_ENSURE_SUCCESS(rv, rv);
+-
+- int levelsToRemove = 1; // In FF21+, appDir points to browser subdirectory.
+ #if defined(XP_MACOSX)
+- levelsToRemove += 2;
++ FSRef fsRef;
++ OSType folderType;
++ if (aLocal) {
++ folderType = kCachedDataFolderType;
++ } else {
++#ifdef MOZ_THUNDERBIRD
++ folderType = kDomainLibraryFolderType;
++#else
++ folderType = kApplicationSupportFolderType;
+ #endif
+- while (localDir && (levelsToRemove > 0)) {
+- // When crawling up the hierarchy, components named "." do not count.
+- nsAutoCString removedName;
+- rv = localDir->GetNativeLeafName(removedName);
+- NS_ENSURE_SUCCESS(rv, rv);
+- bool didRemove = !removedName.Equals(".");
+-
+- // Remove a directory component.
+- nsCOMPtr<nsIFile> parentDir;
+- rv = localDir->GetParent(getter_AddRefs(parentDir));
+- NS_ENSURE_SUCCESS(rv, rv);
+- localDir = parentDir;
+- if (didRemove) --levelsToRemove;
+ }
++ OSErr err = ::FSFindFolder(kUserDomain, folderType, kCreateFolder, &fsRef);
++ NS_ENSURE_FALSE(err, NS_ERROR_FAILURE);
+
+- if (!localDir) return NS_ERROR_FAILURE;
++ rv = NS_NewNativeLocalFile(EmptyCString(), true, getter_AddRefs(localDir));
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ nsCOMPtr<nsILocalFileMac> dirFileMac = do_QueryInterface(localDir);
++ NS_ENSURE_TRUE(dirFileMac, NS_ERROR_UNEXPECTED);
+
+- rv = localDir->AppendRelativeNativePath(
+- NS_LITERAL_CSTRING("TorBrowser" XPCOM_FILE_PATH_SEPARATOR
+- "Data" XPCOM_FILE_PATH_SEPARATOR "Browser"));
++ rv = dirFileMac->InitWithFSRef(&fsRef);
+ NS_ENSURE_SUCCESS(rv, rv);
+
++ localDir = do_QueryInterface(dirFileMac, &rv);
++#elif defined(XP_IOS)
++ nsAutoCString userDir;
++ if (GetUIKitDirectory(aLocal, userDir)) {
++ rv = NS_NewNativeLocalFile(userDir, true, getter_AddRefs(localDir));
++ } else {
++ rv = NS_ERROR_FAILURE;
++ }
++ NS_ENSURE_SUCCESS(rv, rv);
++#elif defined(XP_WIN)
++ nsString path;
+ if (aLocal) {
+- rv = localDir->AppendNative(NS_LITERAL_CSTRING("Caches"));
+- NS_ENSURE_SUCCESS(rv, rv);
++ rv = GetShellFolderPath(FOLDERID_LocalAppData, path);
++ if (NS_FAILED(rv)) rv = GetRegWindowsAppDataFolder(aLocal, path);
++ }
++ if (!aLocal || NS_FAILED(rv)) {
++ rv = GetShellFolderPath(FOLDERID_RoamingAppData, path);
++ if (NS_FAILED(rv)) {
++ if (!aLocal) rv = GetRegWindowsAppDataFolder(aLocal, path);
++ }
++ }
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ rv = NS_NewLocalFile(path, true, getter_AddRefs(localDir));
++#elif defined(XP_UNIX)
++ const char* homeDir = getenv("HOME");
++ if (!homeDir || !*homeDir) return NS_ERROR_FAILURE;
++
++#ifdef ANDROID /* We want (ProfD == ProfLD) on Android. */
++ aLocal = false;
++#endif
++
++ if (aLocal) {
++ // If $XDG_CACHE_HOME is defined use it, otherwise use $HOME/.cache.
++ const char* cacheHome = getenv("XDG_CACHE_HOME");
++ if (cacheHome && *cacheHome) {
++ rv = NS_NewNativeLocalFile(nsDependentCString(cacheHome), true,
++ getter_AddRefs(localDir));
++ } else {
++ rv = NS_NewNativeLocalFile(nsDependentCString(homeDir), true,
++ getter_AddRefs(localDir));
++ if (NS_SUCCEEDED(rv))
++ rv = localDir->AppendNative(NS_LITERAL_CSTRING(".cache"));
++ }
++ } else {
++ rv = NS_NewNativeLocalFile(nsDependentCString(homeDir), true,
++ getter_AddRefs(localDir));
+ }
++#else
++#error "Don't know how to get product dir on your platform"
++#endif
+
+ NS_IF_ADDREF(*aFile = localDir);
+ return rv;
+@@ -1537,23 +1584,39 @@ nsresult nsXREDirProvider::AppendProfilePath(nsIFile*
aFile, bool aLocal) {
+ }
+
+ nsAutoCString profile;
++ nsAutoCString appName;
++ nsAutoCString vendor;
+ if (gAppData->profile) {
+ profile = gAppData->profile;
++ } else {
++ appName = gAppData->name;
++ vendor = gAppData->vendor;
+ }
+
+- nsresult rv = NS_ERROR_FAILURE;
++ nsresult rv;
+
+ #if defined(XP_MACOSX)
+ if (!profile.IsEmpty()) {
+ rv = AppendProfileString(aFile, profile.get());
+- NS_ENSURE_SUCCESS(rv, rv);
++ } else {
++ // Note that MacOS ignores the vendor when creating the profile hierarchy
-
++ // all application preferences directories live alongside one another in
++ // ~/Library/Application Support/
++ rv = aFile->AppendNative(appName);
+ }
++ NS_ENSURE_SUCCESS(rv, rv);
+
+ #elif defined(XP_WIN)
+ if (!profile.IsEmpty()) {
+ rv = AppendProfileString(aFile, profile.get());
+- NS_ENSURE_SUCCESS(rv, rv);
++ } else {
++ if (!vendor.IsEmpty()) {
++ rv = aFile->AppendNative(vendor);
++ NS_ENSURE_SUCCESS(rv, rv);
++ }
++ rv = aFile->AppendNative(appName);
+ }
++ NS_ENSURE_SUCCESS(rv, rv);
+
+ #elif defined(ANDROID)
+ // The directory used for storing profiles
+@@ -1563,6 +1626,11 @@ nsresult nsXREDirProvider::AppendProfilePath(nsIFile*
aFile, bool aLocal) {
+ rv = aFile->AppendNative(nsDependentCString("mozilla"));
+ NS_ENSURE_SUCCESS(rv, rv);
+ #elif defined(XP_UNIX)
++ nsAutoCString folder;
++ // Make it hidden (by starting with "."), except when local (the
++ // profile is already under ~/.cache or XDG_CACHE_HOME).
++ if (!aLocal) folder.Assign('.');
++
+ if (!profile.IsEmpty()) {
+ // Skip any leading path characters
+ const char* profileStart = profile.get();
+@@ -1570,16 +1638,29 @@ nsresult nsXREDirProvider::AppendProfilePath(nsIFile*
aFile, bool aLocal) {
+
+ // On the off chance that someone wanted their folder to be hidden don't
+ // let it become ".."
+- if (*profileStart == '.') profileStart++;
++ if (*profileStart == '.' && !aLocal) profileStart++;
+
+- // Make it hidden (by starting with ".").
+- nsAutoCString folder(".");
+ folder.Append(profileStart);
+ ToLowerCase(folder);
+
+ rv = AppendProfileString(aFile, folder.BeginReading());
+- NS_ENSURE_SUCCESS(rv, rv);
++ } else {
++ if (!vendor.IsEmpty()) {
++ folder.Append(vendor);
++ ToLowerCase(folder);
++
++ rv = aFile->AppendNative(folder);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ folder.Truncate();
++ }
++
++ folder.Append(appName);
++ ToLowerCase(folder);
++
++ rv = aFile->AppendNative(folder);
+ }
++ NS_ENSURE_SUCCESS(rv, rv);
+
+ #else
+ #error "Don't know how to get profile path on your platform"
+diff --git a/toolkit/xre/nsXREDirProvider.h b/toolkit/xre/nsXREDirProvider.h
+index 6b92f3812882..5060b33cdded 100644
+--- a/toolkit/xre/nsXREDirProvider.h
++++ b/toolkit/xre/nsXREDirProvider.h
+@@ -48,15 +48,15 @@ class nsXREDirProvider final : public
nsIDirectoryServiceProvider2,
+
+ void DoShutdown();
+
+- nsresult GetUserAppDataDirectory(nsIFile** aFile) {
++ static nsresult GetUserAppDataDirectory(nsIFile** aFile) {
+ return GetUserDataDirectory(aFile, false);
+ }
+- nsresult GetUserLocalDataDirectory(nsIFile** aFile) {
++ static nsresult GetUserLocalDataDirectory(nsIFile** aFile) {
+ return GetUserDataDirectory(aFile, true);
+ }
+
+ // GetUserDataDirectory gets the profile path from gAppData.
+- nsresult GetUserDataDirectory(nsIFile** aFile, bool aLocal);
++ static nsresult GetUserDataDirectory(nsIFile** aFile, bool aLocal);
+
+ /* make sure you clone it, if you need to do stuff to it */
+ nsIFile* GetGREDir() { return mGREDir; }
+@@ -90,9 +90,9 @@ class nsXREDirProvider final : public
nsIDirectoryServiceProvider2,
+ protected:
+ nsresult GetFilesInternal(const char* aProperty,
+ nsISimpleEnumerator** aResult);
+- nsresult GetUserDataDirectoryHome(nsIFile** aFile, bool aLocal);
+- nsresult GetSysUserExtensionsDirectory(nsIFile** aFile);
+- nsresult GetSysUserExtensionsDevDirectory(nsIFile** aFile);
++ static nsresult GetUserDataDirectoryHome(nsIFile** aFile, bool aLocal);
++ static nsresult GetSysUserExtensionsDirectory(nsIFile** aFile);
++ static nsresult GetSysUserExtensionsDevDirectory(nsIFile** aFile);
+ #if defined(XP_UNIX) || defined(XP_MACOSX)
+ static nsresult GetSystemExtensionsDirectory(nsIFile** aFile);
+ #endif
+diff --git a/xpcom/io/nsAppFileLocationProvider.cpp
b/xpcom/io/nsAppFileLocationProvider.cpp
+index 2aa5482f5789..f1491595a8ea 100644
+--- a/xpcom/io/nsAppFileLocationProvider.cpp
++++ b/xpcom/io/nsAppFileLocationProvider.cpp
+@@ -14,7 +14,6 @@
+ #include "nsISimpleEnumerator.h"
+ #include "prenv.h"
+ #include "nsCRT.h"
+-#include "nsXPCOMPrivate.h" // for XPCOM_FILE_PATH_SEPARATOR
+ #if defined(MOZ_WIDGET_COCOA)
+ #include <Carbon/Carbon.h>
+ #include "nsILocalFileMac.h"
+@@ -248,8 +247,9 @@ nsresult
nsAppFileLocationProvider::CloneMozBinDirectory(nsIFile** aLocalFile) {
+ // GetProductDirectory - Gets the directory which contains the application
data
+ // folder
+ //
+-// UNIX and WIN : <App Folder>/TorBrowser/Data/Browser
+-// Mac : <App Folder>/../../TorBrowser/Data/Browser
++// UNIX : ~/.mozilla/
++// WIN : <Application Data folder on user's machine>\Mozilla
++// Mac : :Documents:Mozilla:
+
//----------------------------------------------------------------------------------------
+ nsresult nsAppFileLocationProvider::GetProductDirectory(nsIFile** aLocalFile,
+ bool aLocal) {
+@@ -261,45 +261,49 @@ nsresult
nsAppFileLocationProvider::GetProductDirectory(nsIFile** aLocalFile,
+ bool exists;
+ nsCOMPtr<nsIFile> localDir;
+
+- rv = CloneMozBinDirectory(getter_AddRefs(localDir));
+- NS_ENSURE_SUCCESS(rv, rv);
+-
+- int levelsToRemove = 1; // In FF21+, bin dir points to browser
subdirectory.
+-#if defined(XP_MACOSX)
+- levelsToRemove += 2;
+-#endif
+- while (localDir && (levelsToRemove > 0)) {
+- // When crawling up the hierarchy, components named "." do not count.
+- nsAutoCString removedName;
+- rv = localDir->GetNativeLeafName(removedName);
+- NS_ENSURE_SUCCESS(rv, rv);
+- bool didRemove = !removedName.Equals(".");
+-
+- // Remove a directory component.
+- nsCOMPtr<nsIFile> parentDir;
+- rv = localDir->GetParent(getter_AddRefs(parentDir));
+- NS_ENSURE_SUCCESS(rv, rv);
+- localDir = parentDir;
+-
+- if (didRemove) {
+- --levelsToRemove;
+- }
++#if defined(MOZ_WIDGET_COCOA)
++ FSRef fsRef;
++ OSType folderType =
++ aLocal ? (OSType)kCachedDataFolderType :
(OSType)kDomainLibraryFolderType;
++ OSErr err = ::FSFindFolder(kUserDomain, folderType, kCreateFolder, &fsRef);
++ if (err) {
++ return NS_ERROR_FAILURE;
+ }
+-
++ NS_NewLocalFile(EmptyString(), true, getter_AddRefs(localDir));
+ if (!localDir) {
+ return NS_ERROR_FAILURE;
+ }
+-
+- rv = localDir->AppendRelativeNativePath(
+- NS_LITERAL_CSTRING("TorBrowser" XPCOM_FILE_PATH_SEPARATOR
+- "Data" XPCOM_FILE_PATH_SEPARATOR "Browser"));
+- NS_ENSURE_SUCCESS(rv, rv);
+-
+- if (aLocal) {
+- rv = localDir->AppendNative(NS_LITERAL_CSTRING("Caches"));
+- NS_ENSURE_SUCCESS(rv, rv);
++ nsCOMPtr<nsILocalFileMac> localDirMac(do_QueryInterface(localDir));
++ rv = localDirMac->InitWithFSRef(&fsRef);
++ if (NS_FAILED(rv)) {
++ return rv;
++ }
++#elif defined(XP_WIN)
++ nsCOMPtr<nsIProperties> directoryService =
++ do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv);
++ if (NS_FAILED(rv)) {
++ return rv;
++ }
++ const char* prop = aLocal ? NS_WIN_LOCAL_APPDATA_DIR : NS_WIN_APPDATA_DIR;
++ rv = directoryService->Get(prop, NS_GET_IID(nsIFile),
++ getter_AddRefs(localDir));
++ if (NS_FAILED(rv)) {
++ return rv;
++ }
++#elif defined(XP_UNIX)
++ rv = NS_NewNativeLocalFile(nsDependentCString(PR_GetEnv("HOME")), true,
++ getter_AddRefs(localDir));
++ if (NS_FAILED(rv)) {
++ return rv;
+ }
++#else
++#error dont_know_how_to_get_product_dir_on_your_platform
++#endif
+
++ rv = localDir->AppendRelativeNativePath(DEFAULT_PRODUCT_DIR);
++ if (NS_FAILED(rv)) {
++ return rv;
++ }
+ rv = localDir->Exists(&exists);
+
+ if (NS_SUCCEEDED(rv) && !exists) {
+@@ -318,6 +322,10 @@ nsresult
nsAppFileLocationProvider::GetProductDirectory(nsIFile** aLocalFile,
+
//----------------------------------------------------------------------------------------
+ // GetDefaultUserProfileRoot - Gets the directory which contains each user
+ // profile dir
++//
++// UNIX : ~/.mozilla/
++// WIN : <Application Data folder on user's machine>\Mozilla\Profiles
++// Mac : :Documents:Mozilla:Profiles:
+
//----------------------------------------------------------------------------------------
+ nsresult nsAppFileLocationProvider::GetDefaultUserProfileRoot(
+ nsIFile** aLocalFile, bool aLocal) {
+@@ -333,6 +341,23 @@ nsresult
nsAppFileLocationProvider::GetDefaultUserProfileRoot(
+ return rv;
+ }
+
++#if defined(MOZ_WIDGET_COCOA) || defined(XP_WIN)
++ // These 3 platforms share this part of the path - do them as one
++ rv = localDir->AppendRelativeNativePath(NS_LITERAL_CSTRING("Profiles"));
++ if (NS_FAILED(rv)) {
++ return rv;
++ }
++
++ bool exists;
++ rv = localDir->Exists(&exists);
++ if (NS_SUCCEEDED(rv) && !exists) {
++ rv = localDir->Create(nsIFile::DIRECTORY_TYPE, 0775);
++ }
++ if (NS_FAILED(rv)) {
++ return rv;
++ }
++#endif
++
+ localDir.forget(aLocalFile);
+
+ return rv;
+--
+2.19.2
+
diff --git
a/www-client/torbrowser/files/torbrowser-60.5.0-Do_not_store_data_in_the_app_bundle.patch
b/www-client/torbrowser/files/torbrowser-60.5.0-Do_not_store_data_in_the_app_bundle.patch
new file mode 100644
index 0000000..a4e6ae9
--- /dev/null
+++
b/www-client/torbrowser/files/torbrowser-60.5.0-Do_not_store_data_in_the_app_bundle.patch
@@ -0,0 +1,189 @@
+From 0e4105afea7b10cf20ab20cb41b187d7d690ff46 Mon Sep 17 00:00:00 2001
+From: Poncho <[email protected]>
+Date: Wed, 30 Jan 2019 09:55:25 +0100
+Subject: [PATCH 1/4] Revert "Bug 13252: Do not store data in the app bundle"
+
+This reverts commit 2ee4d81a2fbcac90996f4f4a99633a0b2d7019bb.
+---
+ toolkit/xre/nsXREDirProvider.cpp | 43 ++++++++++++---------
+ toolkit/xre/nsXREDirProvider.h | 6 ---
+ xpcom/io/nsAppFileLocationProvider.cpp | 53 +++++++++++++++-----------
+ 3 files changed, 55 insertions(+), 47 deletions(-)
+
+diff --git a/toolkit/xre/nsXREDirProvider.cpp
b/toolkit/xre/nsXREDirProvider.cpp
+index d811da50b63d..dbbaffd2a15f 100644
+--- a/toolkit/xre/nsXREDirProvider.cpp
++++ b/toolkit/xre/nsXREDirProvider.cpp
+@@ -44,8 +44,6 @@
+ #include "mozilla/Preferences.h"
+ #include "mozilla/Telemetry.h"
+
+-#include "TorFileUtils.h"
+-
+ #include <stdlib.h>
+
+ #ifdef XP_WIN
+@@ -1337,18 +1335,34 @@ nsresult
nsXREDirProvider::GetUserDataDirectoryHome(nsIFile** aFile,
+ NS_ENSURE_ARG_POINTER(aFile);
+ nsCOMPtr<nsIFile> localDir;
+
+- nsresult rv = GetTorBrowserUserDataDir(getter_AddRefs(localDir));
++ nsresult rv = GetAppDir()->Clone(getter_AddRefs(localDir));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+-#if !defined(ANDROID)
+-#ifdef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
+- rv = localDir->AppendNative(NS_LITERAL_CSTRING("Browser"));
+-#else
+- rv = localDir->AppendRelativeNativePath(
+- NS_LITERAL_CSTRING("Data" XPCOM_FILE_PATH_SEPARATOR "Browser"));
++ int levelsToRemove = 1; // In FF21+, appDir points to browser subdirectory.
++#if defined(XP_MACOSX)
++ levelsToRemove += 2;
+ #endif
++ while (localDir && (levelsToRemove > 0)) {
++ // When crawling up the hierarchy, components named "." do not count.
++ nsAutoCString removedName;
++ rv = localDir->GetNativeLeafName(removedName);
++ NS_ENSURE_SUCCESS(rv, rv);
++ bool didRemove = !removedName.Equals(".");
++
++ // Remove a directory component.
++ nsCOMPtr<nsIFile> parentDir;
++ rv = localDir->GetParent(getter_AddRefs(parentDir));
++ NS_ENSURE_SUCCESS(rv, rv);
++ localDir = parentDir;
++ if (didRemove) --levelsToRemove;
++ }
++
++ if (!localDir) return NS_ERROR_FAILURE;
++
++ rv = localDir->AppendRelativeNativePath(
++ NS_LITERAL_CSTRING("TorBrowser" XPCOM_FILE_PATH_SEPARATOR
++ "Data" XPCOM_FILE_PATH_SEPARATOR "Browser"));
+ NS_ENSURE_SUCCESS(rv, rv);
+-#endif
+
+ if (aLocal) {
+ rv = localDir->AppendNative(NS_LITERAL_CSTRING("Caches"));
+@@ -1433,15 +1447,6 @@ nsresult
nsXREDirProvider::GetUserDataDirectory(nsIFile** aFile, bool aLocal) {
+ return NS_OK;
+ }
+
+-nsresult nsXREDirProvider::GetTorBrowserUserDataDir(nsIFile** aFile) {
+- NS_ENSURE_ARG_POINTER(aFile);
+- nsCOMPtr<nsIFile> exeFile;
+- bool per = false;
+- nsresult rv = GetFile(XRE_EXECUTABLE_FILE, &per, getter_AddRefs(exeFile));
+- NS_ENSURE_SUCCESS(rv, rv);
+- return TorBrowser_GetUserDataDir(exeFile, aFile);
+-}
+-
+ nsresult nsXREDirProvider::EnsureDirectoryExists(nsIFile* aDirectory) {
+ bool exists;
+ nsresult rv = aDirectory->Exists(&exists);
+diff --git a/toolkit/xre/nsXREDirProvider.h b/toolkit/xre/nsXREDirProvider.h
+index 6fe9d9ecbce5..6b92f3812882 100644
+--- a/toolkit/xre/nsXREDirProvider.h
++++ b/toolkit/xre/nsXREDirProvider.h
+@@ -87,12 +87,6 @@ class nsXREDirProvider final : public
nsIDirectoryServiceProvider2,
+ */
+ nsresult GetProfileDir(nsIFile** aResult);
+
+- /**
+- * Get the TorBrowser user data directory by calling the
+- * TorBrowser_GetUserDataDir() utility function.
+- */
+- nsresult GetTorBrowserUserDataDir(nsIFile** aFile);
+-
+ protected:
+ nsresult GetFilesInternal(const char* aProperty,
+ nsISimpleEnumerator** aResult);
+diff --git a/xpcom/io/nsAppFileLocationProvider.cpp
b/xpcom/io/nsAppFileLocationProvider.cpp
+index 3906c6590090..2aa5482f5789 100644
+--- a/xpcom/io/nsAppFileLocationProvider.cpp
++++ b/xpcom/io/nsAppFileLocationProvider.cpp
+@@ -27,8 +27,6 @@
+ #include <sys/param.h>
+ #endif
+
+-#include "TorFileUtils.h"
+-
+ // WARNING: These hard coded names need to go away. They need to
+ // come from localizable resources
+
+@@ -250,14 +248,8 @@ nsresult
nsAppFileLocationProvider::CloneMozBinDirectory(nsIFile** aLocalFile) {
+ // GetProductDirectory - Gets the directory which contains the application
data
+ // folder
+ //
+-#ifdef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
+-// UNIX and WIN : <App Folder>/../TorBrowser-Data/Browser
+-// Mac : <App Folder>/../../../TorBrowser-Data/Browser OR
+-// ~/Library/Application Support/TorBrowser-Data/Browser
+-#else
+ // UNIX and WIN : <App Folder>/TorBrowser/Data/Browser
+ // Mac : <App Folder>/../../TorBrowser/Data/Browser
+-#endif
+
//----------------------------------------------------------------------------------------
+ nsresult nsAppFileLocationProvider::GetProductDirectory(nsIFile** aLocalFile,
+ bool aLocal) {
+@@ -265,25 +257,42 @@ nsresult
nsAppFileLocationProvider::GetProductDirectory(nsIFile** aLocalFile,
+ return NS_ERROR_INVALID_ARG;
+ }
+
+- nsresult rv = NS_ERROR_UNEXPECTED;
++ nsresult rv;
+ bool exists;
+- nsCOMPtr<nsIFile> localDir, exeFile;
++ nsCOMPtr<nsIFile> localDir;
+
+- nsCOMPtr<nsIProperties> directoryService(
+- do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv));
+- NS_ENSURE_SUCCESS(rv, rv);
+- rv = directoryService->Get(XRE_EXECUTABLE_FILE, NS_GET_IID(nsIFile),
+- getter_AddRefs(exeFile));
+- NS_ENSURE_SUCCESS(rv, rv);
+- rv = TorBrowser_GetUserDataDir(exeFile, getter_AddRefs(localDir));
++ rv = CloneMozBinDirectory(getter_AddRefs(localDir));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+-#ifdef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
+- rv = localDir->AppendNative(NS_LITERAL_CSTRING("Browser"));
+-#else
+- rv = localDir->AppendRelativeNativePath(
+- NS_LITERAL_CSTRING("Data" XPCOM_FILE_PATH_SEPARATOR "Browser"));
++ int levelsToRemove = 1; // In FF21+, bin dir points to browser
subdirectory.
++#if defined(XP_MACOSX)
++ levelsToRemove += 2;
+ #endif
++ while (localDir && (levelsToRemove > 0)) {
++ // When crawling up the hierarchy, components named "." do not count.
++ nsAutoCString removedName;
++ rv = localDir->GetNativeLeafName(removedName);
++ NS_ENSURE_SUCCESS(rv, rv);
++ bool didRemove = !removedName.Equals(".");
++
++ // Remove a directory component.
++ nsCOMPtr<nsIFile> parentDir;
++ rv = localDir->GetParent(getter_AddRefs(parentDir));
++ NS_ENSURE_SUCCESS(rv, rv);
++ localDir = parentDir;
++
++ if (didRemove) {
++ --levelsToRemove;
++ }
++ }
++
++ if (!localDir) {
++ return NS_ERROR_FAILURE;
++ }
++
++ rv = localDir->AppendRelativeNativePath(
++ NS_LITERAL_CSTRING("TorBrowser" XPCOM_FILE_PATH_SEPARATOR
++ "Data" XPCOM_FILE_PATH_SEPARATOR "Browser"));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ if (aLocal) {
+--
+2.19.2
+
diff --git
a/www-client/torbrowser/files/torbrowser-60.5.0-nss-fixup-warnings.patch
b/www-client/torbrowser/files/torbrowser-60.5.0-nss-fixup-warnings.patch
new file mode 100644
index 0000000..48289b0
--- /dev/null
+++ b/www-client/torbrowser/files/torbrowser-60.5.0-nss-fixup-warnings.patch
@@ -0,0 +1,25 @@
+From f749a3cc5fc0397e5f4c0948dd35beacac17e2d5 Mon Sep 17 00:00:00 2001
+From: Poncho <[email protected]>
+Date: Sun, 16 Aug 2015 14:47:29 +0200
+Subject: [PATCH 4/4] security/nss/coreconf/Linux.mk: add -fno-strict-aliasing
+
+taken from nss-3.15-gentoo-fixup-warnings.patch
+---
+ security/nss/coreconf/Linux.mk | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/security/nss/coreconf/Linux.mk b/security/nss/coreconf/Linux.mk
+index bb9db413b411..43355237f98a 100644
+--- a/security/nss/coreconf/Linux.mk
++++ b/security/nss/coreconf/Linux.mk
+@@ -119,6 +119,7 @@ ifdef MOZ_DEBUG_SYMBOLS
+ OPTIMIZER += -gdwarf-2
+ endif
+ endif
++OPTIMIZER += -fno-strict-aliasing
+ endif
+
+ ifndef COMPILER_TAG
+--
+2.19.2
+
diff --git a/www-client/torbrowser/files/torbrowser-lto.patch
b/www-client/torbrowser/files/torbrowser-lto.patch
deleted file mode 100644
index 2db67db..0000000
--- a/www-client/torbrowser/files/torbrowser-lto.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- a/security/sandbox/linux/moz.build
-+++ b/security/sandbox/linux/moz.build
-@@ -102,7 +102,12 @@ if CONFIG['CC_TYPE'] in ('clang', 'gcc')
- # gcc lto likes to put the top level asm in syscall.cc in a different
partition
- # from the function using it which breaks the build. Work around that by
- # forcing there to be only one partition.
--if '-flto' in CONFIG['OS_CXXFLAGS'] and CONFIG['CC_TYPE'] != 'clang':
-+lto=False
-+for f in CONFIG['OS_CXXFLAGS']:
-+ if f.startswith('-flto'):
-+ lto=True
-+ break
-+if lto and CONFIG['CC_TYPE'] != 'clang':
- LDFLAGS += ['--lto-partition=one']
-
- if CONFIG['MOZ_ALSA']:
---- a/build/unix/elfhack/moz.build
-+++ b/build/unix/elfhack/moz.build
-@@ -14,7 +14,12 @@ if not CONFIG['CROSS_COMPILE']:
- 'test-ctors.c',
- ]
-
-- if '-flto' in CONFIG['OS_CFLAGS']:
-+ lto=False
-+ for f in CONFIG['OS_CFLAGS']:
-+ if f.startswith('-flto'):
-+ lto=True
-+ break
-+ if lto:
- SOURCES['test-array.c'].flags += ['-fno-lto']
- SOURCES['test-ctors.c'].flags += ['-fno-lto']
-
diff --git a/www-client/torbrowser/files/torbrowser-profiledir.patch
b/www-client/torbrowser/files/torbrowser-profiledir.patch
deleted file mode 100644
index bec2495..0000000
--- a/www-client/torbrowser/files/torbrowser-profiledir.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- a/xpcom/io/TorFileUtils.cpp
-+++ b/xpcom/io/TorFileUtils.cpp
-@@ -81,7 +81,7 @@
- }
- #endif
-
--#elif defined(ANDROID)
-+#elif defined(ANDROID) || defined(TOR_BROWSER_DATA_IN_HOME_DIR)
- // Orfox stores data in the app home directory.
- const char* homeDir = getenv("HOME");
- if (!homeDir || !*homeDir)
---- a/toolkit/xre/nsXREDirProvider.cpp
-+++ b/toolkit/xre/nsXREDirProvider.cpp
-@@ -1283,6 +1283,9 @@
- #if !defined(ANDROID)
- #ifdef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
- rv = localDir->AppendNative(NS_LITERAL_CSTRING("Browser"));
-+#elif defined(TOR_BROWSER_DATA_IN_HOME_DIR)
-+ rv = localDir->AppendRelativeNativePath(NS_LITERAL_CSTRING(MOZ_USER_DIR
-+ XPCOM_FILE_PATH_SEPARATOR
"torbrowser"));
- #else
- rv = localDir->AppendRelativeNativePath(NS_LITERAL_CSTRING("Data"
- XPCOM_FILE_PATH_SEPARATOR "Browser"));
-@@ -1291,7 +1294,20 @@
- #endif
-
- if (aLocal) {
-+#ifndef TOR_BROWSER_DATA_IN_HOME_DIR
- rv = localDir->AppendNative(NS_LITERAL_CSTRING("Caches"));
-+#else
-+ const char* cacheHome = getenv("XDG_CACHE_HOME");
-+ if (cacheHome && *cacheHome) {
-+ rv = NS_NewNativeLocalFile(nsDependentCString(cacheHome), true,
-+ getter_AddRefs(localDir));
-+ } else {
-+ rv = NS_NewNativeLocalFile(nsDependentCString(PR_GetEnv("HOME")), true,
-+ getter_AddRefs(localDir));
-+ rv = localDir->AppendRelativeNativePath(NS_LITERAL_CSTRING(".cache"));
-+ }
-+ rv = localDir->AppendRelativeNativePath(NS_LITERAL_CSTRING("torbrowser"));
-+#endif
- NS_ENSURE_SUCCESS(rv, rv);
- }
-
diff --git a/www-client/torbrowser/files/torbrowser-rust_missing_docs.patch
b/www-client/torbrowser/files/torbrowser-rust_missing_docs.patch
deleted file mode 100644
index 6b38618..0000000
--- a/www-client/torbrowser/files/torbrowser-rust_missing_docs.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- a/servo/components/style_traits/lib.rs
-+++ b/servo/components/style_traits/lib.rs
-@@ -9,7 +9,7 @@
- #![crate_name = "style_traits"]
- #![crate_type = "rlib"]
-
--#![deny(unsafe_code, missing_docs)]
-+#![deny(unsafe_code)]
-
- extern crate app_units;
- #[macro_use] extern crate bitflags;
---- a/servo/components/style/lib.rs
-+++ b/servo/components/style/lib.rs
-@@ -23,7 +23,6 @@
- //! [cssparser]: ../cssparser/index.html
- //! [selectors]: ../selectors/index.html
-
--#![deny(missing_docs)]
-
- extern crate app_units;
- extern crate arrayvec;
diff --git a/www-client/torbrowser/torbrowser-60.6.1.8.0.8.1.1.ebuild
b/www-client/torbrowser/torbrowser-60.6.1.8.0.8.1.1-r1.ebuild
similarity index 77%
rename from www-client/torbrowser/torbrowser-60.6.1.8.0.8.1.1.ebuild
rename to www-client/torbrowser/torbrowser-60.6.1.8.0.8.1.1-r1.ebuild
index 9034134..0690db2 100644
--- a/www-client/torbrowser/torbrowser-60.6.1.8.0.8.1.1.ebuild
+++ b/www-client/torbrowser/torbrowser-60.6.1.8.0.8.1.1-r1.ebuild
@@ -29,9 +29,8 @@ GIT_TAG="tor-browser-${MOZ_PV}-$(ver_rs 3 '-build'
${GIT_TAG})"
DESCRIPTION="The Tor Browser"
HOMEPAGE="
-https://www.torproject.org/projects/torbrowser.html
-https://gitweb.torproject.org/tor-browser.git
-"
+ https://www.torproject.org/projects/torbrowser.html
+ https://gitweb.torproject.org/tor-browser.git"
SLOT="0"
# BSD license applies to torproject-related code like the patches
@@ -39,8 +38,8 @@ SLOT="0"
LICENSE="BSD CC-BY-3.0 MPL-2.0 GPL-2 LGPL-2.1"
IUSE="hardened hwaccel jack -screenshot selinux test"
-SRC_URI="mirror://tor/dist/${PN}/${TOR_PV}"
-PATCH="firefox-${PV%%.*}.6-patches-01"
+SRC_URI="mirror://tor/${PN}/${TOR_PV}"
+PATCH="firefox-${PV%%.*}.6-patches-05"
PATCH=(
https://dev.gentoo.org/~{anarchy,axs,polynomial-c}/mozilla/patchsets/${PATCH}.tar.xz
)
SRC_URI="
https://gitweb.torproject.org/tor-browser.git/snapshot/${GIT_TAG}.tar.gz
@@ -55,28 +54,24 @@ SRC_URI="
"
RESTRICT="primaryuri"
+ASM_DEPEND=">=dev-lang/yasm-1.1"
+
RDEPEND="
+ >=net-vpn/tor-0.3.3.9
system-icu? ( >=dev-libs/icu-60.2 )
jack? ( virtual/jack )
- selinux? ( sec-policy/selinux-mozilla )
-"
+ selinux? ( sec-policy/selinux-mozilla )"
+
DEPEND="
${RDEPEND}
- >=sys-devel/llvm-4.0.1
- >=sys-devel/clang-4.0.1
- >=dev-lang/yasm-1.1
- virtual/opengl
-"
-RDEPEND="
- ${RDEPEND}
- >=net-vpn/tor-0.3.3.9
-"
+ amd64? ( ${ASM_DEPEND} virtual/opengl )
+ x86? ( ${ASM_DEPEND} virtual/opengl )"
S="${WORKDIR}/${GIT_TAG}"
-QA_PRESTRIPPED="usr/lib*/${PN}/${PN}/${PN}"
+QA_PRESTRIPPED="usr/lib*/${PN}/${PN}"
-BUILD_OBJ_DIR="${WORKDIR}/tb"
+BUILD_OBJ_DIR="${WORKDIR}/torb"
llvm_check_deps() {
if ! has_version "sys-devel/clang:${LLVM_SLOT}" ; then
@@ -106,9 +101,6 @@ pkg_setup() {
XDG_SESSION_COOKIE \
XAUTHORITY
- append-cppflags "-DTOR_BROWSER_DATA_IN_HOME_DIR"
- MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}/${PN}"
-
addpredict /proc/self/oom_score_adj
llvm_pkg_setup
@@ -124,14 +116,14 @@ pkg_pretend() {
src_prepare() {
local PATCHES=(
"${WORKDIR}"/firefox
- "${FILESDIR}"/${PN}-profiledir.patch
- "${FILESDIR}"/${PN}-lto.patch
- "${FILESDIR}"/${PN}-rust_missing_docs.patch
- )
- sed \
- -e '/Unknown option: %s/ s:raise InvalidOptionError:print:' \
- -i python/mozbuild/mozbuild/configure/__init__.py
+ # Revert "Change the default Firefox profile directory to be
TBB-relative"
+
"${FILESDIR}"/torbrowser-60.5.0-Do_not_store_data_in_the_app_bundle.patch
+
"${FILESDIR}"/torbrowser-60.5.0-Change_the_default_Firefox_profile_directory.patch
+
+ # FIXME: prevent warnings in bundled nss
+ "${FILESDIR}"/torbrowser-60.5.0-nss-fixup-warnings.patch
+ )
# Enable gnomebreakpad
if use debug ; then
@@ -224,25 +216,37 @@ src_configure() {
fi
echo "mk_add_options MOZ_OBJDIR=${BUILD_OBJ_DIR}" >> "${S}"/.mozconfig
- echo "mk_add_options XARGS=/usr/bin/xargs" >> "${S}"/.mozconfig
-
- # Default mozilla_five_home no longer valid option
- sed '/with-default-mozilla-five-home=/d' -i "${S}"/.mozconfig
- # Rename the install directory and the executable
- mozconfig_annotate 'torbrowser'
--libdir="${EPREFIX}"/usr/$(get_libdir)/${PN}
- mozconfig_annotate 'torbrowser' --with-app-name=${PN}
- mozconfig_annotate 'torbrowser' --with-app-basename=${PN}
- mozconfig_annotate 'torbrowser' --disable-tor-browser-update
- mozconfig_annotate 'torbrowser' --with-tor-browser-version=${TOR_PV}
- mozconfig_annotate 'torbrowser'
--disable-tor-browser-data-outside-app-dir
- mozconfig_annotate 'torbrowser'
--with-branding=browser/branding/official
- mozconfig_annotate 'torbrowser' --disable-maintenance-service
+ echo "mk_add_options XARGS="${EPREFIX}"/usr/bin/xargs" >>
"${S}"/.mozconfig
+
+ # Use .mozconfig settings from torbrowser (setting this here since it
gets overwritten by mozcoreconf-v6.eclass)
+ # see
https://gitweb.torproject.org/tor-browser.git/tree/.mozconfig?h=tor-browser-60.2.0esr-8.0-1
+ echo "mk_add_options MOZ_APP_DISPLAYNAME=\"Tor Browser\"" >>
"${S}"/.mozconfig
+ echo "mk_add_options MOZILLA_OFFICIAL=1" >> "${S}"/.mozconfig
+ echo "mk_add_options BUILD_OFFICIAL=1" >> "${S}"/.mozconfig
+ mozconfig_annotate 'torbrowser' --enable-official-branding
mozconfig_annotate 'torbrowser' --disable-webrtc
mozconfig_annotate 'torbrowser' --disable-eme
+ mozconfig_annotate 'torbrowser' --enable-proxy-bypass-protection
+
+ # Rename the binary and set the profile location
+ mozconfig_annotate 'torbrowser' --with-app-name="${PN}"
+ mozconfig_annotate 'torbrowser' --with-app-basename="${PN}"
+ # see
https://gitweb.torproject.org/tor-browser.git/tree/old-configure.in?h=tor-browser-60.2.0esr-8.0-1#n3205
+ mozconfig_annotate 'torbrowser' --with-tor-browser-version="${TOR_PV}"
+ mozconfig_annotate 'torbrowser' --disable-tor-browser-update
+
+ # torbrowser uses a patched nss library
+ # see
https://gitweb.torproject.org/tor-browser.git/log/security/nss?h=tor-browser-60.2.0esr-8.0-1-build1
mozconfig_annotate 'torbrowser' --without-system-nspr
mozconfig_annotate 'torbrowser' --without-system-nss
+ echo "mk_add_options MOZ_OBJDIR=${BUILD_OBJ_DIR}" >> "${S}"/.mozconfig
+ echo "mk_add_options XARGS="${EPREFIX}"/usr/bin/xargs" >>
"${S}"/.mozconfig
+
+ # Default mozilla_five_home no longer valid option
+ sed '/with-default-mozilla-five-home=/d' -i "${S}"/.mozconfig
+
# Finalize and report settings
mozconfig_final
@@ -253,16 +257,12 @@ src_configure() {
src_compile() {
MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX}/bin/bash}"
MOZ_NOSPAM=1 \
- BUILD_VERBOSE_LOG=1 \
./mach build --verbose || die
}
src_install() {
- local
profile_dir="${WORKDIR}/tor-browser_en-US/Browser/TorBrowser/Data/Browser/profile.default"
cd "${BUILD_OBJ_DIR}" || die
-
- cat "${profile_dir}"/bookmarks.html > \
- dist/bin/browser/chrome/en-US/locale/browser/bookmarks.html
+ export LD_LIBRARY_PATH="${BUILD_OBJ_DIR}/dist/bin"
# Pax mark xpcshell for hardened support, only used for startupcache
creation.
pax-mark m "${BUILD_OBJ_DIR}"/dist/bin/xpcshell
@@ -287,10 +287,7 @@ src_install() {
|| die
fi
- sed -e '/extensions\.autoDisableScopes/s:\<0\>:3:' \
- -i
"${BUILD_OBJ_DIR}"/dist/bin/browser/defaults/preferences/000-tor-browser.js \
- || die
-
+ # Must ensure we use bundled nss/nspr during signing and not system
cd "${S}"
MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX}/bin/bash}"
MOZ_NOSPAM=1 \
DESTDIR="${D}" ./mach install || die
@@ -311,18 +308,22 @@ src_install() {
fi
# Required in order to use plugins and even run torbrowser on hardened.
- pax-mark m
"${ED}"${MOZILLA_FIVE_HOME}/{${PN},${PN}-bin,plugin-container}
+ pax-mark m "${ED}"${MOZILLA_FIVE_HOME}/{${PN},plugin-container}
- # Profile without the tor-launcher extension
- # see: https://trac.torproject.org/projects/tor/ticket/10160
-
- rm "${profile_dir}/extensions/[email protected]" || die \
- "Failed to remove torlauncher extension"
+ # Profile with settings and extensions
+ insinto ${MOZILLA_FIVE_HOME}/defaults/profile
+ doins -r
"${WORKDIR}"/tor-browser_en-US/Browser/TorBrowser/Data/Browser/profile.default/{extensions,bookmarks.html}
- insinto ${MOZILLA_FIVE_HOME}/browser
- doins -r "${profile_dir}"/extensions
+ # see: https://trac.torproject.org/projects/tor/ticket/11751#comment:2
+ # see:
https://github.com/Whonix/anon-ws-disable-stacked-tor/blob/master/usr/lib/anon-ws-disable-stacked-tor/torbrowser.sh
+ dodoc "${FILESDIR}/99torbrowser.example"
dodoc
"${WORKDIR}/tor-browser_en-US/Browser/TorBrowser/Docs/ChangeLog.txt"
+
+ # Profile without the tor-launcher extension
+ # see: https://trac.torproject.org/projects/tor/ticket/10160
+ rm
"${MOZILLA_FIVE_HOME}/defaults/profile/extensions/[email protected]"
|| die \
+ "Failed to remove torlauncher extension"
}
pkg_preinst() {