TheEVolk / xash3d-nodemod

9 stars 3 forks source link

Delegate node.js dependency building to vcpkg #8

Open SNMetamorph opened 5 months ago

SNMetamorph commented 5 months ago

На будущее, нужно создать пакет libnode для vcpkg, для сборки рантайма ноды из исходников. Ну или дождаться, пока его кто-то сделает другой :)

Этот пункт заслуживает особого внимания, я поясню, в чём вообще суть. Проект использует библиотеку рантайма ноды с динамической линковкой (использует embedder API). Готовые библиотеки под нужную архитектуру/платформу/компилятор скачивать реально https://github.com/nodejs/help/issues/4006 (там рантайм билдится как исполняемый файл, а не как динамическая библиотека). Следовательно, остаётся лишь билдить библиотеки вручную. Но тут проблема в том, что это очень долго, а различных комбинаций архитектур/платформ/конфигураций (debug, release)/компиляторов весьма внушительное количество, так что вручную под всё это прекомпилировать - весьма муторное занятие. Но есть решение проблемы - vcpkg может взять на себя часть этой головной боли. Он сбилдит из исходников рантайм ноды под нужную конфигурацию, единожды его скомпилирует, и поместит в кэш - то есть, подождать весьма длительную компиляцию нужно только один раз, в дальнейшем готовый пакет будет браться уже из кэша. Чтобы это реализовать, нужно сделать кастомный порт для libnode, который будет собирать ноду из исходников в нужной конфигурации (не обладаю деталями как это должно делаться).

SNMetamorph commented 5 months ago

https://github.com/microsoft/vcpkg/pull/26768/files