<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/build/plugins, branch CLI_2.18.0</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=CLI_2.18.0</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=CLI_2.18.0'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2024-12-13T06:07:25Z</updated>
<entry>
<title>Never compress python build resources to speedup python configuration and build</title>
<updated>2024-12-13T06:07:25Z</updated>
<author>
<name>spreis</name>
<email>spreis@yandex-team.com</email>
</author>
<published>2024-12-13T05:25:28Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=e90b83df32a421a93c021eaa91710c1193585f9a'/>
<id>urn:sha1:e90b83df32a421a93c021eaa91710c1193585f9a</id>
<content type='text'>
There is no runtime perf impact, but
- The change reduces build graph by removing 2 nodes out of 5 for python which accelerates both configuration and build
- surprisingly in all experiments there were positive impact on binary size about 2MiB
commit_hash:909fdeeb91b7f20c749177d638e97d5a469e422d
</content>
</entry>
<entry>
<title>ymake impl is the only impl of GENERATE_SCRIPT</title>
<updated>2024-12-13T05:48:58Z</updated>
<author>
<name>svidyuk</name>
<email>svidyuk@yandex-team.com</email>
</author>
<published>2024-12-13T05:24:00Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=c5e04b47f57defb294b0a1224ed86416000d05bd'/>
<id>urn:sha1:c5e04b47f57defb294b0a1224ed86416000d05bd</id>
<content type='text'>
commit_hash:a6500256017887b429185060801f2b959ebe955e
</content>
</entry>
<entry>
<title>nots/*: Поддержка пиров из pnpm.overrides (Experiment)</title>
<updated>2024-12-11T17:51:56Z</updated>
<author>
<name>khoden</name>
<email>khoden@yandex-team.com</email>
</author>
<published>2024-12-11T17:01:09Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=33b2328129ae04e3fb67acc7ead17bb3eaff34f4'/>
<id>urn:sha1:33b2328129ae04e3fb67acc7ead17bb3eaff34f4</id>
<content type='text'>
Конфигурирование, сборка, последующая работа показывает, что все работает, как задумано (в этом конкретном кейсе точно).

```
~/arcadia/devtools/dummy_arcadia/typescript/pnpm_overrides -nots-support-pnpm-overrides took 3s
at 15:29:04 f ❯ notsl build -- -n
Building devtools/dummy_arcadia/typescript/pnpm_overrides…
Warn[-WUserWarn]: in $S/devtools/frontend_build_platform/nots/builder/ya.make: Using branch nots/builder
Ok

~/arcadia/devtools/dummy_arcadia/typescript/pnpm_overrides -nots-support-pnpm-overrides took 6s
at 15:30:05 f ❯ notsl start

&gt; @yandex-int/pnpm-overrides-demo@ start /Users/khoden/arcadia/devtools/dummy_arcadia/typescript/pnpm_overrides
&gt; ya tool nots node build/index.js

from fake_lodash
Previous line should be 'from fake_lodash'
```
commit_hash:650c69f1fe38483cda5922ecd8cd813fffdf5bcd
</content>
</entry>
<entry>
<title>Support python custom linter configs during configuration</title>
<updated>2024-12-11T06:43:10Z</updated>
<author>
<name>alevitskii</name>
<email>alevitskii@yandex-team.com</email>
</author>
<published>2024-12-11T06:19:53Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=782ee12dcd41268c49cdcfd427a33f8a05142b01'/>
<id>urn:sha1:782ee12dcd41268c49cdcfd427a33f8a05142b01</id>
<content type='text'>
Lookup custom linter config
commit_hash:364d26435b2794b125199732eb055678b7e96026
</content>
</entry>
<entry>
<title>feat(conf): disable eslint chunks for TS_LOCAL_CLI</title>
<updated>2024-12-10T17:43:00Z</updated>
<author>
<name>zaverden</name>
<email>zaverden@yandex-team.com</email>
</author>
<published>2024-12-10T17:01:15Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=84ade9fd39970a32ef7165980b1f2269944175d4'/>
<id>urn:sha1:84ade9fd39970a32ef7165980b1f2269944175d4</id>
<content type='text'>
commit_hash:ee7c4c8dd35159dbee0563f507c2fe3c0e445685
</content>
</entry>
<entry>
<title>nots: дедупликация действий после сборки,  пропуск pnpm install на актуальных node_modules</title>
<updated>2024-12-10T17:26:38Z</updated>
<author>
<name>khoden</name>
<email>khoden@yandex-team.com</email>
</author>
<published>2024-12-10T17:01:01Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=eb63fbfeb3d457403c1290a9d4ef893b1659226b'/>
<id>urn:sha1:eb63fbfeb3d457403c1290a9d4ef893b1659226b</id>
<content type='text'>
## Суть изменений:

1. Пересмотрены методы логирования при сборке (и после), чтобы не показывались логи действий, который не выполняются (пропускаются).
   Таким образом логирование секций кода (с последующим стиранием строки лога) теперь осуществляется в методе-обёртке.
2. Команда `nots install` теперь выполняет последовательную сборку пиров (раньше запускал параллельно, что приводило к состоянию гонки);
3. Сборка пиров в команде `nots install` выполняется без рекурсивного обхода пиров для пиров (все пиры и так переданы). Это позволило не "чинить дедупликацию", а в принципе не приводить к "дупликации" – каждый пир проходится один раз. Тут важно определить порядок обхода.
4. Пропуск повторных запусков `pnpm install` без необходимости. Необходимость вычисляется так:
   - `builder` в локальном режиме кладет в аутпут файлик `pre.pnpm-lockfile.yaml`, хеш которого используется в `nots/cli`
   - `builder` в локальном режиме рядом с папкой `node_modules` создает файлик `node_modules.json` с хешом `pre.pnpm-lockfile.yaml`, который использовался при сборке этого `node_modules`
   - `nots/cli` использует сравнивает файлик из аутпута и из `node_modules.json` и если отличаются, то `pnpm install` запускается.

Пожалуй, пункт 4 стоит расписать.
Кажется, что эти файлики всегда будут совпадать, но я перестраховываюсь: часть пиров может быть закеширована в сборке, но удалена из `~/.nots/nm_store`, например, при запуске с `nots --clean`.
Чтобы избежать подобных локальных казусов я и перестраховываюсь.
Хеш от `pre.pnpm-lockfile.yaml` предпочтительнее хеша от `pnpm-lockfile.yaml`, т.к. он включает в себя пиры (т.е. это результат смерживания лок-файлов).
Также была версия с проверкой, что node_modules создалась в промежутке между проверкой и запуском nots/cli (т.е. в рамках `ya make`), но это не работает при кешировании узлов сборки пиров.
Если у вас будут идеи, какие еще проверки можно сделать для принятия решения, запускать ли `pnpm install` – я открыт к предложениям.

## Побочные улучшения:

### nots/cli

- Добавлен хелпер `utils.ts:processItems(items, action)` - отказоустойчивый `forEach`;
- Для `log-formatters.ts:unlog` вместо прямой записи ESC-последовательностей в stdout используется модуль `readline`;
- `log-formatters.ts:unlog` не срабатывает в тестах (пишет заглушку) и при включении отладочного вывода (`DEBUG`/`--verbose`);
- Для `DoneHandler` добавлен метод-обёртка  `runOnce(action, key, fn)` для более удобного использования, а также запись в лог отладки, если действие пропускается.

## Что не вошло в PR

Осталось на будущее:

1. Дедупликация пиров нескольких таргетов.
   Т.е. сборка пиров при `nots install project1 project2` должна быть общей, а не своё поддерево для каждого.
   И `ya make` для них нужно запускать один раз.
   И пост-сборочные действия выполнять единожды в правильном порядке, деже не пытаясь в дупликацию.
2. Подобный пункту 4 механизм, но не для `nots build`, а `nots install` — не запускать `pnpm install`, если недавно ставили (тут нужно определиться с критерием)
commit_hash:11f98acb44f759464876f61c5dbf69da7c0d0340
</content>
</entry>
<entry>
<title>Clean dead jbuild related code from java plugin</title>
<updated>2024-12-10T03:06:32Z</updated>
<author>
<name>svidyuk</name>
<email>svidyuk@yandex-team.com</email>
</author>
<published>2024-12-10T02:46:10Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=eebc72eb00185f8053096ff6181ce862516bc68c'/>
<id>urn:sha1:eebc72eb00185f8053096ff6181ce862516bc68c</id>
<content type='text'>
commit_hash:4ca69fda6fd766a1225e818c8fadbc0aeaf4b72a
</content>
</entry>
<entry>
<title>nots: bootstrap update to clean up old pnpm store</title>
<updated>2024-12-04T08:14:47Z</updated>
<author>
<name>vturov</name>
<email>vturov@yandex-team.com</email>
</author>
<published>2024-12-04T07:52:37Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=8463f1192992e8761da0c19ba4d5dc9aa37998f7'/>
<id>urn:sha1:8463f1192992e8761da0c19ba4d5dc9aa37998f7</id>
<content type='text'>
`nots --clean-all` is to clean old pnpm store
commit_hash:927fbcdd1038f132059572ff8a6d37ac8377b082
</content>
</entry>
<entry>
<title>remove coverage_push_tool from ya</title>
<updated>2024-12-03T17:18:52Z</updated>
<author>
<name>ya-shishqa</name>
<email>ya-shishqa@yandex-team.com</email>
</author>
<published>2024-12-03T17:01:03Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=6301465bfe48c88e4aaf1a8addeed7cda47e4b47'/>
<id>urn:sha1:6301465bfe48c88e4aaf1a8addeed7cda47e4b47</id>
<content type='text'>
Related to
commit_hash:64d85744304d4a2195b5039e1d7688d14592b717
</content>
</entry>
<entry>
<title>Lookup CPP custom linter configs</title>
<updated>2024-12-03T07:06:22Z</updated>
<author>
<name>alevitskii</name>
<email>alevitskii@yandex-team.com</email>
</author>
<published>2024-12-03T06:43:44Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=b0c2229a8d320931b2a986503a39f0f805956f11'/>
<id>urn:sha1:b0c2229a8d320931b2a986503a39f0f805956f11</id>
<content type='text'>
Lookup custom linter config
commit_hash:43ad16d363652673970beb4e755b5e045618607e
</content>
</entry>
</feed>
