Revert r144460 "Remove the linux-only CR_SOURCE_ROOT environment variable override of base::DIR_SOURCE_ROOT."
CR_SOURCE_ROOT is used in practice by linux user(s), plural still to be
determined, mostly for ChromeOS related development.
[email protected]
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10808048
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148621 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/base/base_paths_posix.cc b/base/base_paths_posix.cc
index 743f77aa..9be441d 100644
--- a/base/base_paths_posix.cc
+++ b/base/base_paths_posix.cc
@@ -74,6 +74,20 @@
#endif
}
case base::DIR_SOURCE_ROOT: {
+ // Allow passing this in the environment, for more flexibility in build
+ // tree configurations (sub-project builds, gyp --output_dir, etc.)
+ scoped_ptr<base::Environment> env(base::Environment::Create());
+ std::string cr_source_root;
+ if (env->GetVar("CR_SOURCE_ROOT", &cr_source_root)) {
+ path = FilePath(cr_source_root);
+ if (file_util::PathExists(path)) {
+ *result = path;
+ return true;
+ } else {
+ DLOG(WARNING) << "CR_SOURCE_ROOT is set, but it appears to not "
+ << "point to a directory.";
+ }
+ }
// On POSIX, unit tests execute two levels deep from the source root.
// For example: out/{Debug|Release}/net_unittest
if (PathService::Get(base::DIR_EXE, &path)) {
diff --git a/testing/test_env.py b/testing/test_env.py
index 410f812e..1d8bff87 100755
--- a/testing/test_env.py
+++ b/testing/test_env.py
@@ -25,11 +25,15 @@
def run_executable(cmd, env):
"""Runs an executable with:
+ - environment variable CR_SOURCE_ROOT set to the root directory.
- environment variable LANGUAGE to en_US.UTF-8.
- Reuses sys.executable automatically.
"""
# Many tests assume a English interface...
env['LANGUAGE'] = 'en_US.UTF-8'
+ # Used by base/base_paths_linux.cc as an override. Just make sure the default
+ # logic is used.
+ env.pop('CR_SOURCE_ROOT', None)
# Ensure paths are correctly separated on windows.
cmd[0] = cmd[0].replace('/', os.path.sep)
cmd = fix_python_path(cmd)