Показать сообщение отдельно
  #3  
Старый 01.08.2022, 03:31
Alex Shuman
Guest
 
Сообщений: n/a
По умолчанию Проблемы при сборке husky на *nix и их возможные решения

Alex Shuman написал(а) к Michael Dukelsky в Aug 22 02:10:49 по местному времени:


x) Sunday Jul 31, 2022, 20:21. Michael Dukelsky ── Alex Shuman.

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

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

Да, вполне возможно, что это проблема того, кто создал и захатчил в файлэху husky-all-1.9-source-20220708.zip...

Я не пробовал получить именно с гитхаба, возможно, там всё ок.

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

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

Да, я именно так и делал, но в случае ubuntu пришлось использовать init_build , который нашёл мне правильный huskymak.cfg . По ходу, проблема в том, что я использовал для ubuntu huskymak.cfg.debian в качестве основы, а в нём, почему-то, нет PROGRAMS= и в итоге получилось "нет целей для сборки".

build.sh же до этапа сборки мне довести не удалось. Возможно, его стоит поправить, добавив возможность пропустить обновление исходников, т.е. собирать из того, что уже есть в каталогах...

MD> ${MAKE} $jobs depend && ${MAKE} $jobs

А это был корень проблемы, я долго думал, почему "нет целей для сборки" sqpack и прочего, с указанием на какие-то несуществующие .d файлы, потом внимательно почитал build.sh...

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

да там просто make install и всё устанавливается, куда в конфиге и прописал...

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

А ещё он найдёт правильный huskymak.cfg.

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

В порте, где так сделали, объяснили это несовместимостью определённой версии clang. Впрочем, я нашёл проблему. На той машине с FreeBSD остались инклюды от этого порта, вот он в итоге и ругался на

/usr/local/include/fidoconf/common.h:166:38: note: passing argument to parameter 'aka' here
НUSKYEXT char *aka2str(const hs_addr aka);
^
hpt/src/carbon.c:109:34: error: passing 'hsaddr ' (aka 'struct _netaddr ') to parameter of incompatible type 'hs_addr' (aka 'struct netaddr'); remove &
msg->netMail ? aka2str(&msg->destAddr) : "");
^~~~~~~~~~~~~~

...и прочее в том же духе. Пришлось почистить инклюды из /usr/local, сделать заново gmake depend и вот тогда собрался и с помощью clang.

В общем, логика поиска инклюдов сначала в системных путях, и только потом в локальных каталогах - то ещё извращение, зачем так делать...

А gcc, видимо, делает наоборот, т.е. более логичным путём, поэтому собиралось и так.

AS>> * В общем мейкфайле сборки нет рецепта для hptutil. Или он больше не
AS>> поддерживается? Отдельно собирать не пробовал.
MD> Я не хотел включать hptutil, потому что когда-то тут были крики, что эта
MD> программа портит базы. Но, пожалуй, надо включить, чтобы получить
MD> подробное сообщение об ошибке. :)

Ну тут или объявить неподдерживаемой, или давать собрать, ведь в виндовых экзешниках оно есть...

--- Neon BBS Line 2, 570-57-80, 20:30-06:30. [bbs.ncc.org.ua]
Ответить с цитированием