Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Category:

Бинарные библиотеки для Perl под винду

Перепробовав разные комбинации, остановился на Strawberry Perl и PAR. Начну с конца

Установка на продакшен

- Ставим Strawberry Perl MSI в папку без пробелов
- Заливаем приложение
- Заливаем репоз (в котором лежат бинарные пекеджи зависимостей приложения, включая транзитивные)
- Запускаем install.pl (в котором лежит манифест непосредственных зависимостей):
use PAR { repository => '.', dependencies => 1, install => 1 };

use Function::Parameters;
use CHI;
use CHI::Driver::BerkeleyDB;
- Запускаем приложение и откидываемся на спинку кресла

Билд пекеджей из репоза

- Создаем build-repo.cmd, в котором описана последовательность сборки пакетов:
call build CHI
call build Function::Arguments
call build MooX::Types::MooseLike::Numeric
call build Hash::MoreUtils
call build Time::Duration
call build Digest::JHash
call build CHI::Driver::BerkeleyDB
call inject
Он не совпадает со списком install.pl из-за того, что часть пакетов на CPAN с багами, и зависимости не прописаны в метаданных.

Установка билд-тулзов

Использованные выше билд-тулзы для репоза ставятся install-dev.pl из того же самого или отдельного репоза:
use PAR { repository => '.', dependencies => 1, install => 1 };

use CPANPLUS::Dist::PAR;
use PAR::Repository;
А теперь самое интересное:

Бутстрап билд-тулзов

- Создаем папочку будущего репоза и в ней 2 однострочных батника:

build.bat: call cpan2dist --format CPANPLUS::Dist::PAR --install %*

inject.bat: call parrepo inject -r . --file "%UserProfile%\.cpanplus\5.20.0\dist\PAR\*.par"

parrepo предоставляется PAR::Repository, у которого в зависимостях YAML::Syck, который крешится на Strawberry Perl for Windows 64. Скачиваем ZIP-снапшот ветку из гитхаба и кладем в нашу папку прямо в виде архива.

Создаем dev-bootstrap.cmd:
call cpanp i CPANPLUS::Dist::PAR
call build CPANPLUS::Dist::PAR
call build --archive perl5-yaml-syck-fix-win64-crashes.zip
call build PAR::Repository
call parrepo create -r .
call inject
Забутстрапились :)
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments