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 <pon...@spahan.ch> +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 <pon...@spahan.ch> +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 <pon...@spahan.ch> +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/tor-launc...@torproject.org.xpi" || 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/tor-launc...@torproject.org.xpi" || die \ + "Failed to remove torlauncher extension" } pkg_preinst() {