mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-08-02 13:43:52 -09:00
Building berkeleydb is broken with a non-threaded toolchain with gcc >= 14.x: ../src/rep/rep_method.c:1740:25: error: implicit declaration of function '__repmgr_get_nsites'; did you mean '__rep_get_nsites'? [-Wimplicit-function-declaration] 1740 | return (__repmgr_get_nsites(env, n)); According to src/repmgr/repmgr_util.c, line 503+, the function '__repmgr_get_nsites' mentioned in the gcc error message "may only be called after threads have been started". This source file repmgr_util.c belongs to REPMGR_OBJS according to dist/Makefile.in, line 249+, which is, according to dist/configure.ac, line 956, only build if thread support is present. In a non-threaded build '__repmgr_get_nsites' does not exist causing the build error. To fix the build error we disable replication for non-threaded toolchains. Using gcc 13.x the build error does not occur, tested with this defconfig: BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y BR2_PTHREADS_NONE=y BR2_GCC_VERSION_13_X=y BR2_PACKAGE_BERKELEYDB=y Using this minimal gcc 14.x-based defconfig BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y BR2_PTHREADS_NONE=y BR2_PER_PACKAGE_DIRECTORIES=y BR2_PACKAGE_BERKELEYDB=y the build error can be reproduced. The oldest build error of this kind, afaics, dates back to 2024-06-13: https://autobuild.buildroot.net/results/e0d/e0d6bdbef01bee277b0da83605b2906af876058a/ Fixes: https://autobuild.buildroot.net/results/792/792ed942d17bb8d00cd321536a102f6dd63b6a8a/ Signed-off-by: Bernd Kuhls <bernd@kuhls.net> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
87 lines
2.6 KiB
Makefile
87 lines
2.6 KiB
Makefile
################################################################################
|
|
#
|
|
# berkeleydb
|
|
#
|
|
################################################################################
|
|
|
|
# Since BerkeleyDB version 6 and above are licensed under the Affero
|
|
# GPL (AGPL), we want to keep this 'bdb' package at version 5.x to
|
|
# avoid licensing issues.
|
|
# BerkeleyDB version 6 or above should be provided by a dedicated
|
|
# package instead.
|
|
BERKELEYDB_VERSION = 5.3.28
|
|
BERKELEYDB_SITE = http://download.oracle.com/berkeley-db
|
|
BERKELEYDB_SOURCE = db-$(BERKELEYDB_VERSION).NC.tar.gz
|
|
BERKELEYDB_SUBDIR = build_unix
|
|
BERKELEYDB_LICENSE = BerkeleyDB License
|
|
BERKELEYDB_LICENSE_FILES = LICENSE
|
|
BERKELEYDB_CPE_ID_VENDOR = oracle
|
|
BERKELEYDB_CPE_ID_PRODUCT = berkeley_db
|
|
BERKELEYDB_INSTALL_STAGING = YES
|
|
BERKELEYDB_BINARIES = db_archive db_checkpoint db_deadlock db_dump \
|
|
db_hotbackup db_load db_log_verify db_printlog db_recover db_replicate \
|
|
db_stat db_tuner db_upgrade db_verify
|
|
|
|
# build directory can't be the directory where configure are there, so..
|
|
define BERKELEYDB_CONFIGURE_CMDS
|
|
(cd $(@D)/build_unix; rm -rf config.cache; \
|
|
$(TARGET_CONFIGURE_OPTS) \
|
|
CFLAGS="$(TARGET_CFLAGS) -std=gnu99" \
|
|
$(TARGET_CONFIGURE_ARGS) \
|
|
../dist/configure $(QUIET) \
|
|
--target=$(GNU_TARGET_NAME) \
|
|
--host=$(GNU_TARGET_NAME) \
|
|
--build=$(GNU_HOST_NAME) \
|
|
--prefix=/usr \
|
|
--exec-prefix=/usr \
|
|
--sysconfdir=/etc \
|
|
--with-gnu-ld \
|
|
$(if $(BR2_INSTALL_LIBSTDCPP),--enable-cxx,--disable-cxx) \
|
|
--disable-java \
|
|
--disable-tcl \
|
|
$(if $(BR2_PACKAGE_BERKELEYDB_COMPAT185),--enable-compat185,--disable-compat185) \
|
|
$(if $(BR2_PACKAGE_BERKELEYDB_DBM),--enable-dbm,--disable-dbm) \
|
|
$(SHARED_STATIC_LIBS_OPTS) \
|
|
--with-pic \
|
|
--enable-o_direct \
|
|
$(if $(BR2_TOOLCHAIN_HAS_THREADS),--enable-mutexsupport,--disable-mutexsupport) \
|
|
$(if $(BR2_TOOLCHAIN_HAS_THREADS),--enable-replication,--disable-replication) \
|
|
)
|
|
endef
|
|
|
|
define HOST_BERKELEYDB_CONFIGURE_CMDS
|
|
(cd $(@D)/build_unix; rm -rf config.cache; \
|
|
$(HOST_CONFIGURE_OPTS) \
|
|
CFLAGS="$(HOST_CFLAGS) -std=gnu99" \
|
|
../dist/configure $(QUIET) \
|
|
--prefix=$(HOST_DIR) \
|
|
--with-gnu-ld \
|
|
--disable-cxx \
|
|
--disable-java \
|
|
--disable-tcl \
|
|
--disable-compat185 \
|
|
--with-pic \
|
|
--enable-o_direct \
|
|
--disable-mutexsupport \
|
|
)
|
|
endef
|
|
|
|
ifneq ($(BR2_PACKAGE_BERKELEYDB_TOOLS),y)
|
|
|
|
define BERKELEYDB_REMOVE_TOOLS
|
|
rm -f $(addprefix $(TARGET_DIR)/usr/bin/, $(BERKELEYDB_BINARIES))
|
|
endef
|
|
|
|
BERKELEYDB_POST_INSTALL_TARGET_HOOKS += BERKELEYDB_REMOVE_TOOLS
|
|
|
|
endif
|
|
|
|
define BERKELEYDB_REMOVE_DOCS
|
|
rm -rf $(TARGET_DIR)/usr/docs
|
|
endef
|
|
|
|
BERKELEYDB_POST_INSTALL_TARGET_HOOKS += BERKELEYDB_REMOVE_DOCS
|
|
|
|
$(eval $(autotools-package))
|
|
$(eval $(host-autotools-package))
|