diff options
author | khoden <khoden@yandex-team.com> | 2024-10-28 20:00:36 +0300 |
---|---|---|
committer | khoden <khoden@yandex-team.com> | 2024-10-28 20:38:51 +0300 |
commit | e3c8507a3d1cb090278f211232ddfde3bedc54d4 (patch) | |
tree | 543744fd50738003b11d504d20a7cc53981692a8 | |
parent | ace138d6dd98cc07535f51c14229972432386cc3 (diff) | |
download | ydb-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.py | 7 | ||||
-rw-r--r-- | build/plugins/lib/nots/package_manager/pnpm/package_manager.py | 16 |
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) |