aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkhoden <khoden@yandex-team.com>2024-10-28 20:00:36 +0300
committerkhoden <khoden@yandex-team.com>2024-10-28 20:38:51 +0300
commite3c8507a3d1cb090278f211232ddfde3bedc54d4 (patch)
tree543744fd50738003b11d504d20a7cc53981692a8
parentace138d6dd98cc07535f51c14229972432386cc3 (diff)
downloadydb-e3c8507a3d1cb090278f211232ddfde3bedc54d4.tar.gz
nots: Локальные оптимизации сборки 2.0
Не могу позеленить, локально всё хорошо: замокано, проходит и `nots test`, и `nots run test`, и `ya test`. Разбираюсь, но это не мешает ревьюить commit_hash:2e7b4cf14b0f8ff1a8340c919460395e5bcdfea7
-rw-r--r--build/plugins/lib/nots/package_manager/base/utils.py7
-rw-r--r--build/plugins/lib/nots/package_manager/pnpm/package_manager.py16
2 files changed, 20 insertions, 3 deletions
diff --git a/build/plugins/lib/nots/package_manager/base/utils.py b/build/plugins/lib/nots/package_manager/base/utils.py
index 916da6d9b3..ffb3952721 100644
--- a/build/plugins/lib/nots/package_manager/base/utils.py
+++ b/build/plugins/lib/nots/package_manager/base/utils.py
@@ -50,6 +50,13 @@ def build_nm_bundle_path(p):
return os.path.join(p, NODE_MODULES_WORKSPACE_BUNDLE_FILENAME)
+def build_nm_store_path(moddir: str) -> str:
+ nots_store_path = os.getenv("NOTS_STORE_PATH", os.path.join(home_dir(), ".nots"))
+ build_path = os.path.join(nots_store_path, "nm_store", moddir)
+
+ return build_path
+
+
def extract_package_name_from_path(p):
# if we have scope prefix then we are using the first two tokens, otherwise - only the first one
parts = p.split("/", 2)
diff --git a/build/plugins/lib/nots/package_manager/pnpm/package_manager.py b/build/plugins/lib/nots/package_manager/pnpm/package_manager.py
index ec8bb3db61..b40cafeb34 100644
--- a/build/plugins/lib/nots/package_manager/pnpm/package_manager.py
+++ b/build/plugins/lib/nots/package_manager/pnpm/package_manager.py
@@ -8,7 +8,15 @@ from ..base import BasePackageManager, PackageManagerError
from ..base.constants import NODE_MODULES_WORKSPACE_BUNDLE_FILENAME
from ..base.node_modules_bundler import bundle_node_modules
from ..base.timeit import timeit
-from ..base.utils import b_rooted, build_nm_bundle_path, build_pj_path, home_dir, s_rooted
+from ..base.utils import (
+ b_rooted,
+ build_nm_bundle_path,
+ build_nm_path,
+ build_nm_store_path,
+ build_pj_path,
+ home_dir,
+ s_rooted,
+)
class PnpmPackageManager(BasePackageManager):
@@ -55,8 +63,10 @@ class PnpmPackageManager(BasePackageManager):
if local_cli:
# Use single CAS for all the projects built locally
store_dir = self.get_local_pnpm_store()
- # It's a default value of pnpm itself. But it should be defined explicitly for not using values from the lockfiles or from the previous installations.
- virtual_store_dir = self._nm_path('.pnpm')
+
+ nm_store_path = build_nm_store_path(self.module_path)
+ # Use single virtual-store location in ~/.nots/nm_store/$MODDIR/node_modules/.pnpm/virtual-store
+ virtual_store_dir = os.path.join(build_nm_path(nm_store_path), self._VSTORE_NM_PATH)
self._run_pnpm_install(store_dir, virtual_store_dir)
self._run_apply_addons_if_need(yatool_prebuilder_path, virtual_store_dir)