Добавил возможность собирать snap-пакеты, которые позволяют установку программы в самых разных дистрибутивах GNU/Linux, но, в первую очередь, в Ubuntu. Snap не лишена недостатков, но в одном ряду со сборкой rpm и, тем более, deb она показалось самой простой и логичной для разработчика.
Для полноценной работы транслятору нужен доступ к вызову компиляторов, а также заголовочным файлам и библиотекам, что в нынешнем состоянии требует классического доступа(classic confinement), который для возможности выкладывания в Snap Store требует ручного одобрения после проверки. Сегодня проект получил такое одобрение, поэтому теперь транслятор доступен для стандартной установки через Snap:
snap install vostok --classic --beta &&
snap alias vostok ost # добавляем краткий псевдоним
Canonical предоставляет бесплатную сборочную систему для свободных проектов, упаковываемых в snap-пакеты, и так как в системе доступны архитектуры, недоступные мне напрямую, то я с интересом воспользовался этой возможностью. Из-за этого побочным продуктом создания snap-пакетов оказалась сборка и тестирование транслятора для IBM-вских архитектур PowerPC 64-bit Little-endian и IBM Z(S390X). На Power PC всё заработало сразу, а на IBM Z из-за порядка байт от старшего к младшему произошла накладка с сигнализирующей неопределённостью(signaling NaN), используемой в качестве недопустимого значения для дробей. Поскольку современные системы всё равно обычно игнорируют сигнальный характер этого значения, то я перевёл на использование по умолчанию обычной неопределёности. После этого всё заработало и на S390X. Несколько позднее я исправил создание сигнальной неопределённости и для big endian.
Не нашёл сведений в открытом доступе, поэтому не исключаю, что это первый такой транслятор Oberon, доступный на этих системах. Вдруг, кому-то не хватало?
Отмечу, что multipass, который применяется по умолчанию для сборки snap пакета, показал себя крайне неудобным - требует около 30 Гиб на системном разделе и блокирует возможность запуска виртуальных машин в Virtualbox. Есть более экономный LXD, для задействования которого нужно запускать сборку с соответстующим ключом:
snapcraft --use-lxd
Комментариев нет:
Отправить комментарий