beldmit: (Программизм)
Dmitry Belyavskiy ([personal profile] beldmit) wrote2014-06-03 08:59 pm

LibreSSL

Граждане, кто-нибудь умеет обращаться с такой зверушкой, как OpenBSD?

А то я собрался впилить в их форк openssl, который libressl, выпиленный ГОСТ. То, что выписанное из CVS их поделие не собирается, это нормально, допустим, но боюсь, что я вообще не понимаю, как собрать их вариант libcrypto. Или надо выписать нафиг исходники операционки вообще все, а только libressl не хватит?

[identity profile] beldmit.livejournal.com 2014-06-03 05:46 pm (UTC)(link)
Ну поехали. Как начать собирать libcrypto, я догадался.

Вот они понатыкали в свой код свою функцию reallocarray. По man-у (http://www.openbsd.org/cgi-bin/man.cgi?query=reallocarray&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html) оно определено в stdlib.h. Но нифига его там не присутствует. Что нужно поставить, чтобы было мне счастье?

[identity profile] dnovikoff.livejournal.com 2014-06-03 05:51 pm (UTC)(link)
До компа доберусь, отвечу - я с мобильного пока

[identity profile] beldmit.livejournal.com 2014-06-04 03:53 pm (UTC)(link)
Не добрался?

[identity profile] dnovikoff.livejournal.com 2014-06-04 06:30 pm (UTC)(link)
Добрался. Прошу прощения за задержку :)

[identity profile] dnovikoff.livejournal.com 2014-06-04 06:30 pm (UTC)(link)
ну, идём на их cvsweb, ищем там stdlib.h:
http://www.openbsd.org/cgi-bin/cvsweb/src/include/stdlib.h?rev=1.58

делаем поиск по reallocarray, и сразу видим, что она обрамлена в #ifdef __BSD_VISIBLE. добавляем флаг -D__BSD_VISIBLE компилеру и получаем PROFIT :)

собственно, большая часть таких вещей, которые не собираются сходу, в основном на эти флаги #ifdef и завязана, и самих флагов довольно много. алгоритм решения типовой.

[identity profile] beldmit.livejournal.com 2014-06-04 06:46 pm (UTC)(link)
Эмм… А в родной инсталляции его почему нет? Grep не находит.

[identity profile] dnovikoff.livejournal.com 2014-06-04 06:47 pm (UTC)(link)
В смысле, почему этот флаг нигде не присутствует в оригинальных Makefile? Тому может быть два объяснения.

Во-первых, скорее всего он определяется через третьи руки в виде какого-нибудь более глобального флага _BSD_SOURCE. Это наверное в sys/defs.h или где-то ещё. Там этих флагов воз и маленькая тележка и между ними очень сложные взаимоотношения.

Во-вторых, если говорить за сборку системы целиком, то у них там сборка toolchain под это дело с очень нетривиальным лицензионно-ректальным сексом всю жизнь была. Из-за гнутой лицензии GCC они не могут положить сорцы компилера в дистрибутив, а берут откуда-то из совершенно третьего места, а собирается он так, что там вообще чёрт ногу сломит. И в этом toolchain под ядро ещё при сборке зашивается хренова тьма флагов, стоящих по умолчанию.

Вроде все давно на clang перешли, но фиг его не знает - я давно эту тему не копал. Базово там было реально два toolchain'а - один "для всех" типа пользовательский, которым собирались те же порты и который лежал в /usr/bin, и второй отдельный для сборки ядра и собственно системы.
Edited 2014-06-04 19:03 (UTC)

[identity profile] beldmit.livejournal.com 2014-06-04 07:38 pm (UTC)(link)
Спасибо. Вытащил src/include, прописал его в CFLAGS, процесс куда-то пошел.

[identity profile] dnovikoff.livejournal.com 2014-06-04 07:51 pm (UTC)(link)
Не за что :) Если какие вопросы ещё будут - обращайтесь.
Единственное, у меня с графиком последнее время совсем беда, поэтому могу иногда отвечать с очень странными лагами.

[identity profile] beldmit.livejournal.com 2014-06-04 07:58 pm (UTC)(link)
Ну, я тут поскольку ковыряюсь более-менее не торопясь, то не критично.

Спасибо!

[identity profile] nasse.livejournal.com 2014-06-03 05:58 pm (UTC)(link)
Может, вы случайно знаете, как на OpenBSD amd настроить, чтобы цеплял всё расшаренное по nfs?

[identity profile] dnovikoff.livejournal.com 2014-06-04 06:32 pm (UTC)(link)
я, честно говоря, не фанат OpenBSD. просто когда-то давно я был фанатом NetBSD и в силу этого мне пришлось перепахать практически всё ядро и юзерленд, чтобы заставить его работать как надо. под конец этой затеи там патчей метра два было уже, включая порты разного функционала с OpenBSD/FreeBSD/Linux. поэтому я неплохо себе представляю, как оно устроено внутри и из-за чего его может плющить, но вот всяких подробностей настройки и администирования я уже не помню :)

[identity profile] nasse.livejournal.com 2014-06-04 07:08 pm (UTC)(link)
Ага, понятно.
А это идея - поставить Net и посмотреть, как amd работает там. Потому что во фряхе он ведет себя правильно.