LibreSSL

Jun. 3rd, 2014 08:59 pm
beldmit: (Программизм)
[personal profile] beldmit
Граждане, кто-нибудь умеет обращаться с такой зверушкой, как OpenBSD?

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

Date: 2014-06-03 05:46 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Ну поехали. Как начать собирать 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. Но нифига его там не присутствует. Что нужно поставить, чтобы было мне счастье?

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

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

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

Date: 2014-06-04 06:30 pm (UTC)
From: [identity profile] dnovikoff.livejournal.com
ну, идём на их 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 и завязана, и самих флагов довольно много. алгоритм решения типовой.

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

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

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

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

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

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

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

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

Спасибо!

Profile

beldmit: (Default)
Dmitry Belyavskiy

February 2026

S M T W T F S
1234567
8910111213 14
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 19th, 2026 07:49 pm
Powered by Dreamwidth Studios