Показать сообщение отдельно
  #2  
Старый 31.07.2022, 23:01
Michael Dukelsky
Guest
 
Сообщений: n/a
По умолчанию Проблемы при сборке husky на *nix и их возможные решения

Michael Dukelsky написал(а) к Alex Shuman в Jul 22 20:21:08 по местному времени:

Привет, Alex!

31 Jul 22 04:34, Alex Shuman послал(а) письмо к All:

AS> Это всё про husky-all-1.9-source-20220708.zip

AS> Сегодня мы попробуем собрать husky на

AS> FreeBSD 13.0-RELEASE FreeBSD 13.0-RELEASE #0
AS> releng/13.0-n244733-ea31abc261f: Fri Apr 9 04:24:09 UTC 2021
AS> root@releng1.nyi.freebsd.org:/usr/obj/usr/src/amd64.amd64/sys/GENERIC
AS> amd64

AS> и

AS> Linux 5.15.0-1013-oracle #17~20.04.1-Ubuntu SMP Mon Jul 4 05:27:11 UTC
AS> 2022 x8664 x86_64 x8664 GNU/Linux

AS> На обеих собирал себе в /home. Статическая сборка, с perl и hptzip.

AS> Собственно, проблемы...

AS> * Обе системы не любят CR/LF в .sh скриптах - было бы неплохо заменить
AS> просто на LF уже в дистрибутиве.

Разумеется, в репозитории на гитхабе никаких CR нет. Удали свою копию репозитория, содержащую CR, выполни команду

git config --global core.autocrlf input

и после этого клонируй репозиторий по новой. Заодно почитай man git-config.

AS> * Нет скриптов для офлайн сборки - init_build и build.sh настойчиво
AS> хотят гитхаб. В документации INSTALL единственной альтернативой
AS> предлагается ручная сборка по "legacy makefiles" (но мне удалось
AS> собрать и без них).

Да, собирался написать этот раздел, но пока руки не дошли. Конечно же, можно собирать и без скриптов, и оффлайн.

В каталог, где находятся все локальные копии репозиториев Нusky, надо из huskybse/ скопировать huskymak.cfg для Линукса и huskymak.cfg.bsd для FreeBSD. Последний надо переименовать в huskymak.cfg. Туда же скопировать huskybse/Makefile. Запускать make/gmake надо будет в этом каталоге. Лучше всего эти действия выполнить с помощью wget и initbuild как это написано в huskybse/INSTALLru.asciidoc.

MAKE=make для Линукса и MAKE=gmake для FreeBSD. jobs - это количество логических процессоров, если на машине кроме сборки в данный момент ничего важного не делается. Иначе надо выбрать меньшее число. Но не меньше единицы. :-) Можно $jobs в командах, приведённых ниже, опустить. Тогда make/gmake будет выбирать сам, на сколько процессов можно распараллелить процесс сборки.

# Скачать обновления. Если репозиториев ещё нет, то склонировать все репозитории.
${MAKE} $jobs update

Это надо делать на машине с установленным git и с доступом в интернет. Всё остальное можно делать на машине без установленного git и без доступа в интернет.

# Сформировать файлы, показывающие, что от чего зависит в данном проекте
# и выполнить сборку
${MAKE} $jobs depend && ${MAKE} $jobs

Как установить собранные программы написано в в huskybse/INSTALL_ru.asciidoc. Возможно, я что-то забыл написать. Если что будет не так, пиши.

AS> При этом, init_build, в принципе, и при
AS> существующих исходниках (распакованных из архива) поправит вам конфиг
AS> для сборки,

init_ build надо запускать только один раз, для того, чтобы подготовить первоначальное скачивание исходников. И это написано в документации.

AS> * В случае FreeBSD 13 предлагаемый компилятор clang не сработает -
AS> сборка остановится на неисправимой ошибке в одном из файлов
AS> исходников. Решение: использовать gcc/g++ . Решение пришлось искать в
AS> портах более старой версии.

Решение неправильное. Надо привести кусок лога с ошибкой. Вообще-то я тестировал сборку во FreeBSD именно на 13.0, но это было какое-то время назад.

AS> * В общем мейкфайле сборки нет рецепта для hptutil. Или он больше не
AS> поддерживается? Отдельно собирать не пробовал.

Я не хотел включать hptutil, потому что когда-то тут были крики, что эта программа портит базы. Но, пожалуй, надо включить, чтобы получить подробное сообщение об ошибке. :)

Желаю успехов, Alex!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20181105
Ответить с цитированием