OpenWRT — сборка в Debian 9 «Stretch»

Недавно попробовал собрать OpenWRT в Debian 9 Stretch и наткнулся на ошибку.
Само собой в Debian ничего не сломали, просто OpenWRT не успели адаптироваться под обновления.
Кстати, в LEDE вопрос быстренько решили.
Мы же с Вами сегодня решим этот же вопрос и в исходниках OpenWRT

Кстати, эта же ошибка присуща новой Ubuntu с порядковым номером 17.10

Ошибка при сборке OpenWRT в Debian 9

Ошибка возникает еще на этапе сборки инструментария кросскомпиляции

make tools/install -j1 V=s

Вот эта команда выдает большой лог, который заканчивается строками

/openwrt/build_dir/host/u-boot-2014.10/lib/rsa/rsa-sign.c: In function 'rsa_get_exponent':
/openwrt/build_dir/host/u-boot-2014.10/lib/rsa/rsa-sign.c:279:21: error: dereferencing pointer to incomplete type 'RSA {aka struct rsa_st}'
  if (BN_num_bits(key->e) > 64)
                     ^~
scripts/Makefile.host:134: recipe for target 'tools/lib/rsa/rsa-sign.o' failed
make[4]: *** [tools/lib/rsa/rsa-sign.o] Error 1
Makefile:1195: recipe for target 'tools-only' failed
make[3]: *** [tools-only] Error 2
make[3]: Leaving directory '/openwrt/build_dir/host/u-boot-2014.10'
Makefile:46: recipe for target '/openwrt/build_dir/host/u-boot-2014.10/.built' failed
make[2]: *** [/openwrt/build_dir/host/u-boot-2014.10/.built] Error 2
make[2]: Leaving directory '/openwrt/tools/mkimage'
tools/Makefile:134: recipe for target 'tools/mkimage/compile' failed
make[1]: *** [tools/mkimage/compile] Error 2
make[1]: Leaving directory '/openwrt'
/openwrt/include/toplevel.mk:192: recipe for target 'tools/install' failed
make: *** [tools/install] Error 2

У тебя так же? Тогда ты по адресу.

Решение проблемы

Честно своруем проблемы с репозитория LEDE
Находясь в папке с исходниками выполните команду

curl 'https://git.lede-project.org/?p=source.git;a=blob_plain;f=tools/mkimage/patches/210-openssl-1.1.x-compat.patch' -o ./tools/mkimage/patches/210-openssl-1.1.x-compat.patch

Тем самым скачаете тот самый патч, который вносит изменения в нужные файлы.

Теперь при снова запускайте сборку прошивки и радуйтесь.

Не тут то было

Обновил исходники командой

git pull

И на всякий случай решил пересобрать средства компиляции.
И вышестоящее решение перестало помогать. Вернее в этот раз ошибка превратилась в следующий текст.

/openwrt/build_dir/host/cmake-3.6.1/Utilities/cmcurl/lib/vtls/openssl.c: In function 'get_cert_chain':
/openwrt/build_dir/host/cmake-3.6.1/Utilities/cmcurl/lib/vtls/openssl.c:2482:13: error: dereferencing pointer to incomplete type 'X509 {aka struct x509_st}'
     cinf = x->cert_info;
             ^~
/openwrt/build_dir/host/cmake-3.6.1/Utilities/cmcurl/lib/vtls/openssl.c:2484:30: error: dereferencing pointer to incomplete type 'X509_CINF {aka struct x509_cinf_st}'
     j = asn1_object_dump(cinf->signature->algorithm, bufp, CERTBUFFERSIZE);
                              ^~
/openwrt/build_dir/host/cmake-3.6.1/Utilities/cmcurl/lib/vtls/openssl.c:2510:20: error: dereferencing pointer to incomplete type 'EVP_PKEY {aka struct evp_pkey_st}'
       switch(pubkey->type) {
                    ^~
Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/build.make:2558: recipe for target 'Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/vtls/openssl.c.o' failed
make[5]: *** [Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/vtls/openssl.c.o] Error 1
make[5]: Leaving directory '/openwrt/build_dir/host/cmake-3.6.1'
CMakeFiles/Makefile2:1488: recipe for target 'Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/all' failed
make[4]: *** [Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/all] Error 2
make[4]: Leaving directory '/openwrt/build_dir/host/cmake-3.6.1'
Makefile:160: recipe for target 'all' failed
make[3]: *** [all] Error 2
make[3]: Leaving directory '/openwrt/build_dir/host/cmake-3.6.1'
Makefile:29: recipe for target '/openwrt/build_dir/host/cmake-3.6.1/.built' failed
make[2]: *** [/openwrt/build_dir/host/cmake-3.6.1/.built] Error 2
make[2]: Leaving directory '/openwrt/tools/cmake'
tools/Makefile:134: recipe for target 'tools/cmake/compile' failed
make[1]: *** [tools/cmake/compile] Error 2
make[1]: Leaving directory '/openwrt'
/openwrt/include/toplevel.mk:192: recipe for target 'tools/install' failed
make: *** [tools/install] Error 2

Экспресс-гуглинг подсказал поменять исходники CMake на 3.9.1..
Ну что ж.. попробуем

nano ./tools/cmake/Makefile

Содержимое вот этого файла надо привести в следующий вид

#
include $(TOPDIR)/rules.mk
PKG_NAME:=cmake
PKG_VERSION:=3.9.1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://cmake.org/files/v3.9/ \
		https://fossies.org/linux/misc/
#PKG_MD5SUM:=d6dd661380adacdb12f41b926ec99545

HOST_BUILD_PARALLEL:=1
HOST_CONFIGURE_PARALLEL:=1
include $(INCLUDE_DIR)/host-build.mk
HOST_CONFIGURE_CMD := MAKEFLAGS="$(HOST_JOBS)" $(BASH) ./configure
HOST_CONFIGURE_VARS :=
HOST_CONFIGURE_ARGS := \
	--prefix=$(STAGING_DIR_HOST)
$(eval $(call HostBuild))

Вроде всё понятно
PKG_VERSION поменяли на 3.9.1
PKG_SOURCE_URL в адресе первого URL изменили v3.6 на v3.9

PKG_MD5SUM закомментировали, так как хэш исходников новой версии я не знаю, а узнавать было лень, буду честным.

Начинаем пересобирать и.. да что ж такое то, опять ругается на патч к CMake 110-freebsd-compat.patch.
Я был на тот момент уже немного дерганным и просто удалил патч (FreeBSD использовать в обозримом будущем для сборки OpenWRT ну никак не планирую).
И снова пытаемся собрать.. Фух.. Вроде пошло дело

PS: да-да, иногда во мне просыпается не айтишник-перфекционист, а эникейщик-пофигист, но так действительно бывает быстрее выполнить поставленную задачу)

Кстати, друзья, теперь за всеми свежими и важными записями можете следить прямо из паблика ВКонтакте.

Подпишись в один клик:

Оставьте свой комментарий

Войти с помощью: