pw_env_setup: Add PW_PACKAGE_ROOT variable
Add a PW_PACKAGE_ROOT environment variable but don't use it yet. Will
need to wait a bit to ensure people have rerun bootstrap after this CL
lands before using this variable.
Bug: b/240707084
Change-Id: I154e1533b0094dff1e2d8d8884383da348c4fc14
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/103882
Reviewed-by: Armando Montanez <amontanez@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Pigweed-Auto-Submit: Rob Mohr <mohrr@google.com>
diff --git a/pw_cli/py/pw_cli/env.py b/pw_cli/py/pw_cli/env.py
index 68f3cf5..24eeb0d 100644
--- a/pw_cli/py/pw_cli/env.py
+++ b/pw_cli/py/pw_cli/env.py
@@ -34,6 +34,7 @@
type=envparse.strict_bool,
default=False)
parser.add_var('PW_ENVIRONMENT_ROOT')
+ parser.add_var('PW_PACKAGE_ROOT')
parser.add_var('PW_PROJECT_ROOT')
parser.add_var('PW_ROOT')
parser.add_var('PW_SKIP_BOOTSTRAP')
diff --git a/pw_env_setup/docs.rst b/pw_env_setup/docs.rst
index baaf827..8016442 100644
--- a/pw_env_setup/docs.rst
+++ b/pw_env_setup/docs.rst
@@ -468,6 +468,9 @@
all-caps version of the basename of the package file, without the extension.
(E.g., "path/foo.json" becomes ``PW_FOO_CIPD_INSTALL_DIR``.)
+``PW_PACKAGE_ROOT``
+ Location that packages installed by ``pw package`` will be installed to.
+
``VIRTUAL_ENV``
Path to Pigweed's virtualenv.
@@ -522,6 +525,7 @@
dir_cipd_pigweed = "<pigweed-root>/.environment/cipd/packages/pigweed"
dir_cipd_luci = "<pigweed-root>/.environment/cipd/packages/luci"
dir_virtual_env = "<pigweed-root>/.environment/pigweed-venv"
+ dir_pw_package_root = "<pigweed-root>/.environment/packages"
}
It's straightforward to use these variables.
diff --git a/pw_env_setup/py/pw_env_setup/env_setup.py b/pw_env_setup/py/pw_env_setup/env_setup.py
index c454591..8035dca 100755
--- a/pw_env_setup/py/pw_env_setup/env_setup.py
+++ b/pw_env_setup/py/pw_env_setup/env_setup.py
@@ -625,18 +625,20 @@
result = result_func()
+ pkg_dir = os.path.join(self._install_dir, 'packages')
+ self._env.set('PW_PACKAGE_ROOT', pkg_dir)
+
+ if not os.path.isdir(pkg_dir):
+ os.makedirs(pkg_dir)
+
if not self._pw_packages:
return result(_Result.Status.SKIPPED)
- logdir = os.path.join(self._install_dir, 'packages')
- if not os.path.isdir(logdir):
- os.makedirs(logdir)
-
for pkg in self._pw_packages:
print('installing {}'.format(pkg))
cmd = ['pw', 'package', 'install', pkg]
- log = os.path.join(logdir, '{}.log'.format(pkg))
+ log = os.path.join(pkg_dir, '{}.log'.format(pkg))
try:
with open(log, 'w') as outs, self._env():
print(*cmd, file=outs)
diff --git a/pw_env_setup/py/pw_env_setup/gni_visitor.py b/pw_env_setup/py/pw_env_setup/gni_visitor.py
index 03121a0..3836232 100644
--- a/pw_env_setup/py/pw_env_setup/gni_visitor.py
+++ b/pw_env_setup/py/pw_env_setup/gni_visitor.py
@@ -80,6 +80,10 @@
self._lines.append(' dir_virtual_env = "{}"'.format(
self._abspath_to_gn_path(set.value)))
+ if set.name == 'PW_PACKAGE_ROOT':
+ self._lines.append(' dir_pw_package_root = "{}"'.format(
+ self._abspath_to_gn_path(set.value)))
+
def visit_clear(self, clear):
pass
diff --git a/pw_package/py/pw_package/package_manager.py b/pw_package/py/pw_package/package_manager.py
index 1254121..d1cebac 100644
--- a/pw_package/py/pw_package/package_manager.py
+++ b/pw_package/py/pw_package/package_manager.py
@@ -178,6 +178,7 @@
'-e',
dest='pkg_root',
type=pathlib.Path,
+ # TODO(b/240707084) Replace with PW_PACKAGE_ROOT.
default=(pathlib.Path(os.environ['_PW_ACTUAL_ENVIRONMENT_ROOT']) /
'packages'),
)