xdg-basedir.patch 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # Move ~/.pki directory to ${XDG_DATA_HOME:-$HOME/.local}/share/pki on linux
  2. # builds to follow the XDG Base Directory Specification. For details, refer to
  3. # https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
  4. --- a/crypto/nss_util.cc
  5. +++ b/crypto/nss_util.cc
  6. @@ -30,6 +30,9 @@
  7. #include "build/chromeos_buildflags.h"
  8. #include "crypto/nss_crypto_module_delegate.h"
  9. #include "crypto/nss_util_internal.h"
  10. +#include "base/environment.h"
  11. +#include "base/nix/xdg_util.h"
  12. +#include "chrome/common/chrome_constants.h"
  13. namespace crypto {
  14. @@ -45,12 +48,25 @@ static const base::FilePath::CharType kReadOnlyCertDB[] =
  15. base::FilePath GetDefaultConfigDirectory() {
  16. base::FilePath dir;
  17. +#if defined(OS_LINUX)
  18. + std::unique_ptr<base::Environment> env(base::Environment::Create());
  19. + dir = base::nix::GetXDGDirectory(env.get(), base::nix::kXdgDataHomeEnvVar, base::nix::kDotDataDir);
  20. +#else
  21. base::PathService::Get(base::DIR_HOME, &dir);
  22. +#endif
  23. if (dir.empty()) {
  24. +#if defined(OS_LINUX)
  25. + LOG(ERROR) << "Failed to get $HOME or $XDG_DATA_HOME directory.";
  26. +#else
  27. LOG(ERROR) << "Failed to get home directory.";
  28. +#endif
  29. return dir;
  30. }
  31. +#if defined(OS_LINUX)
  32. + dir = dir.Append(chrome::kBrowserProcessExecutableName).AppendASCII("pki").AppendASCII("nssdb");
  33. +#else
  34. dir = dir.AppendASCII(".pki").AppendASCII("nssdb");
  35. +#endif
  36. if (!base::CreateDirectory(dir)) {
  37. LOG(ERROR) << "Failed to create " << dir.value() << " directory.";
  38. dir.clear();
  39. --- a/base/nix/xdg_util.cc
  40. +++ b/base/nix/xdg_util.cc
  41. @@ -41,6 +41,9 @@ std::optional<std::string>& GetXdgActivationToken() {
  42. namespace base::nix {
  43. +const char kDotDataDir[] = ".local/share";
  44. +const char kXdgDataHomeEnvVar[] = "XDG_DATA_HOME";
  45. +
  46. const char kDotConfigDir[] = ".config";
  47. const char kXdgConfigHomeEnvVar[] = "XDG_CONFIG_HOME";
  48. const char kXdgCurrentDesktopEnvVar[] = "XDG_CURRENT_DESKTOP";
  49. --- a/base/nix/xdg_util.h
  50. +++ b/base/nix/xdg_util.h
  51. @@ -72,6 +72,12 @@ BASE_EXPORT extern const char kXdgConfigHomeEnvVar[];
  52. // The XDG current desktop environment variable.
  53. BASE_EXPORT extern const char kXdgCurrentDesktopEnvVar[];
  54. +// The default XDG data directory name.
  55. +BASE_EXPORT extern const char kDotDataDir[];
  56. +
  57. +// The XDG data directory environment variable.
  58. +BASE_EXPORT extern const char kXdgDataHomeEnvVar[];
  59. +
  60. // The XDG session type environment variable.
  61. BASE_EXPORT extern const char kXdgSessionTypeEnvVar[];