Адаптация Debian для использования реализации coreutils на языке Rust

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
09-Мар-2021 23:30

Сильвестр Ледрю (Sylvestre Ledru), известный своей работой по сборке Debian GNU/Linux с использованием компилятора Clang, сообщил об успешном проведении эксперимента по задействованию альтернативного набора утилит coreutils, переписанного на языке Rust. В состав coreutils входят такие утилиты, как sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln и ls. Для первого этапа интеграции в Debian варианта coreutils на языке Rust были поставлены следующие цели:
  • Создание пакета с альтернативным вариантом coreutils на языке Rust для Debian и Ubuntu.
  • Загрузка Debian с рабочим столом GNOME, используя rust-coreutils.
  • Установка 1000 наиболее популярных пакетов из репозитория.
  • Cборка из исходных текстов Firefox, LLVM/Clang и ядра Linux в окружении с rust-coreutils.
После создания более 100 патчей для Rust/coreutils удалось успешно реализовать все намеченные цели. Из продолжающейся работы отмечается реализация недостающих утилит и опций, улучшение качества и единообразия кода, развитие тестового набора, устранение сбоев, возникающий при запуске тестового набора от GNU Coreutils (пока успешно выполняется 141 тест из 613).
При создании пакета rust-coreutils было решено не заменять пакет coreutils, а обеспечить возможность их параллельной работы. Варианты утилит на языке Rust устанавливаются в /usr/lib/cargo/bin/ и активируются через добавление данного каталога в переменную окружения PATH. Создание пакета rust-coreutils усложняла необходимость загрузки в репозиторий и всех сборочных зависимостей, включая Rust и различные мелки crate-пакеты.
С созданием загрузочного образа особых проблем не возникло, но адаптация пакетов для окружения с rust-coreutils потребовала большой работы, так как многие скрипты post-install вызывают утилиты из набора coreutils. Наибольшее число проблем было вызвано отсутствием необходимых опций, например, в утилите "cp" отсутствовали опции "--archive" и "--no-dereference", в "ln" не было поддержки опции "--relative", в mktemp - "-t", в sync "-fs", в install - "--owner" и "--group". Другие проблемы всплыли из-за различий в поведении, например, утилита install не поддерживала указание /dev/null в качестве входного файла, в mkdir вместо "--parent" присутствовала опция "--parents" и т.п.
При тестировании сборки крупных кодовых баз больших проблем не возникло. При сборке Firefox и LLVM/Clang применяются python-скрипты и cmake, поэтому замена coreutils на них не повлияла. Сборка ядра Linux прошла относительно гладко, всплыли лишь две проблемы: вывод ошибки при использовании chown с символической ссылкой и отсутствие опции "-n" в утилите ln.
===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_coreutils, #_debian, #_rust
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 23-Ноя 01:25
Часовой пояс: UTC + 5