Страницы

понедельник, 10 мая 2021 г.

Snap - пакет

Добавил возможность собирать 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

Комментариев нет:

Отправить комментарий

Обработка ошибок

Тема корректной обработки ошибок в программе является довольно сложным вопросом в программировании. Отчасти от того, что и она сама являет...