Hi all, I am trying to build an application that requires mbedtls and libeven2 libraries, but if add both of them to dependencies the openssl-3.0.15 is starting compiling when I run make package/myapp/compile, but why?! It should use mbedtls(and it could because the application could be linked to mbedtls library)
ubus call system board
Try to track dependencies like libevent etc, ok mbedtls does not depend on openssl....
I am trying to build via openwrt building system, and it seems that that FindLibevent2.cmake couldn't find mbedtls-based event2 library:
FIND_LIBRARY(LIBEVENT2_CORE NAMES event_core PATHS ${LIBEVENT2_LIB_PATHS} ${HOW_TO_FIND})
FIND_LIBRARY(LIBEVENT2_EXTRA NAMES event_extra PATHS ${LIBEVENT2_LIB_PATHS} ${HOW_TO_FIND})
FIND_LIBRARY(LIBEVENT2_SSL_LIBRARIES NAMES event_openssl libevent_openssl PATHS ${LIBEVENT2_LIB_PATHS} ${HOW_TO_FIND})
FIND_LIBRARY(LIBEVENT2_MBEDTLS_LIBRARIES NAMES event_mbedtls libevent_mbedtls PATHS ${LIBEVENT2_LIB_PATHS} ${HOW_TO_FIND})
It seems that event_mbedtls libevent_mbedtls are not found that's why I am getting further errors like:
ninja: Entering directory `/openwrt/build_dir/target-mipsel_24kc_musl/pegasocks-0.1.13'
[1/41] Building C object CMakeFiles/libpegas.dir/src/pegas.c.o
FAILED: CMakeFiles/libpegas.dir/src/pegas.c.o
/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-13.3.0_musl/bin/mipsel-openwrt-linux-musl-gcc -DPGS_VERSION=\"v0.0.0-\" -DUSE_MBEDTLS=1 -I/openwrt/build_dir/target-mipsel_24kc_musl/pegasocks-0.1.13/include -I/openwrt/build_dir/target-mipsel_24kc_musl/pegasocks-0.1.13/include/pegasocks -I/openwrt/build_dir/target-mipsel_24kc_musl/pegasocks-0.1.13/3rd-party -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -msoft-float -ffile-prefix-map=/openwrt/build_dir/target-mipsel_24kc_musl/pegasocks-0.1.13=pegasocks-0.1.13 -mips16 -minterlink-mips16 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -Os -DNDEBUG -std=gnu11 -MD -MT CMakeFiles/libpegas.dir/src/pegas.c.o -MF CMakeFiles/libpegas.dir/src/pegas.c.o.d -o CMakeFiles/libpegas.dir/src/pegas.c.o -c /openwrt/build_dir/target-mipsel_24kc_musl/pegasocks-0.1.13/src/pegas.c
In file included from /openwrt/build_dir/target-mipsel_24kc_musl/pegasocks-0.1.13/src/pegas.c:6:
/openwrt/build_dir/target-mipsel_24kc_musl/pegasocks-0.1.13/include/pegasocks/ssl.h:6:10: fatal error: event2/bufferevent_ssl.h: No such file or directory
6 | #include <event2/bufferevent_ssl.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.
It seems that libevent2 depends on openssl, but I don't understand why...
I am not including libevent2-openssl package to dependency of compiling application (pegasocks)
{
"kernel": "6.6.63",
"hostname": "OpenWrt",
"system": "MediaTek MT7628AN ver:1 eco:2",
"model": "TP-Link Archer C50 v6 (CA/EU/RU)",
"board_name": "tplink,archer-c50-v6",
"rootfs_type": "squashfs",
"release": {
"distribution": "OpenWrt",
"version": "24.10.0-rc2",
"revision": "r28161-ea17e958b9",
"target": "ramips/mt76x8",
"description": "OpenWrt 24.10.0-rc2 r28161-ea17e958b9",
"builddate": "1733226068"
}
}
Run diffconfig script and check all selected libevent options.
/openwrt$ make defconfig
#
# No change to .config
#
/openwrt$ grep -v ^# .config|grep libevent
CONFIG_PACKAGE_libevent2=m
CONFIG_PACKAGE_libevent2-core=m
CONFIG_PACKAGE_libevent2-extra=m
CONFIG_PACKAGE_libevent2-pthreads=m
/openwrt$ grep -v ^# .config|grep openssl
/openwrt$ grep -v ^# .config|grep OPENSSL
/openwrt$ make -j4 package/pegasocks/compile
make[2]: Entering directory '/openwrt/scripts/config'
make[2]: 'conf' is up to date.
make[2]: Leaving directory '/openwrt/scripts/config'
make[1] package/pegasocks/compile
make[2] -C package/libs/toolchain clean-build
make[2] -C package/libs/toolchain compile
make[2] -C package/libs/mbedtls clean-build
make[2] -C package/libs/openssl clean-build
make[2] -C package/libs/mbedtls compile
make[2] -C package/libs/openssl compile
make[2] -C package/libs/libevent2 clean-build
make[2] -C package/libs/libevent2 compile
but why?! why openssl is compiling ?
/openwrt$ ./scripts/diffconfig.sh
CONFIG_TARGET_ramips=y
CONFIG_TARGET_ramips_mt76x8=y
CONFIG_TARGET_ramips_mt76x8_DEVICE_tplink_archer-c50-v6=y
CONFIG_ALL_KMODS=y
CONFIG_ALL_NONSHARED=y
CONFIG_DEVEL=y
CONFIG_AUTOREMOVE=y
CONFIG_BPF_TOOLCHAIN_BUILD_LLVM=y
# CONFIG_BPF_TOOLCHAIN_NONE is not set
CONFIG_BUILDBOT=y
CONFIG_COLLECT_KERNEL_DEBUG=y
CONFIG_HAS_BPF_TOOLCHAIN=y
CONFIG_IB=y
CONFIG_IMAGEOPT=y
CONFIG_JSON_CYCLONEDX_SBOM=y
CONFIG_KERNEL_BUILD_DOMAIN="buildhost"
CONFIG_KERNEL_BUILD_USER="builder"
CONFIG_KERNEL_DEBUG_INFO=y
CONFIG_KERNEL_DEBUG_INFO_REDUCED=y
CONFIG_KERNEL_DEBUG_KERNEL=y
CONFIG_MAKE_TOOLCHAIN=y
CONFIG_PACKAGE_kmod-hwmon-core=m
CONFIG_PACKAGE_kmod-mt76-connac=m
CONFIG_PACKAGE_kmod-mt7615-common=m
CONFIG_PACKAGE_kmod-mt7615e=m
CONFIG_PACKAGE_kmod-mt7663-firmware-ap=m
CONFIG_PACKAGE_libbpf=m
CONFIG_PACKAGE_libelf=m
CONFIG_PACKAGE_libevent2=m
CONFIG_PACKAGE_libevent2-core=m
CONFIG_PACKAGE_libevent2-extra=m
CONFIG_PACKAGE_libevent2-pthreads=m
CONFIG_PACKAGE_libpcap=m
CONFIG_PACKAGE_libxdp=m
CONFIG_PACKAGE_pegasocks=m
CONFIG_PACKAGE_px5g-mbedtls=y
CONFIG_PACKAGE_qosify=m
CONFIG_PACKAGE_ravpower-mcu=m
CONFIG_PACKAGE_rpcd=y
CONFIG_PACKAGE_rpcd-mod-file=y
CONFIG_PACKAGE_rpcd-mod-iwinfo=y
CONFIG_PACKAGE_rpcd-mod-ucode=y
CONFIG_PACKAGE_tc-tiny=m
CONFIG_PACKAGE_ucode-mod-math=y
CONFIG_PACKAGE_uhttpd=y
CONFIG_PACKAGE_uhttpd-mod-ubus=y
CONFIG_PACKAGE_xdp-filter=m
CONFIG_PACKAGE_xdp-loader=m
CONFIG_PACKAGE_xdpdump=m
CONFIG_PACKAGE_zlib=m
CONFIG_PEGASOCKS_MBEDTLS=y
# CONFIG_PKG_ASLR_PIE_NONE is not set
CONFIG_PKG_ASLR_PIE_REGULAR=y
CONFIG_REPRODUCIBLE_DEBUG_INFO=y
CONFIG_SDK=y
CONFIG_SDK_LLVM_BPF=y
CONFIG_USE_LLVM_BUILD=y
CONFIG_VERSIONOPT=y
CONFIG_VERSION_BUG_URL=""
CONFIG_VERSION_CODE=""
CONFIG_VERSION_DIST="OpenWrt"
CONFIG_VERSION_FILENAMES=y
CONFIG_VERSION_HOME_URL=""
CONFIG_VERSION_HWREV=""
CONFIG_VERSION_MANUFACTURER=""
CONFIG_VERSION_MANUFACTURER_URL=""
CONFIG_VERSION_NUMBER=""
CONFIG_VERSION_PRODUCT=""
CONFIG_VERSION_REPO="https://downloads.openwrt.org/releases/24.10.0-rc2"
CONFIG_VERSION_SUPPORT_URL=""
I think, I have found out the trouble -- libevent2 doesn't support mbedtls in stable releases. only in alpha version support was added, I have tried to compile the alpha version and succeeded with it.
but I can't understand why openssl is still needed if I don't select libevent2-openssl package