Commit 43a3984c authored by Jim Harris's avatar Jim Harris Committed by Tomasz Zawadzki
Browse files

configure: add CONFIG_HAVE_ARC4RANDOM



glibc 2.36 added arc4random(), which breaks
the SPDK iSCSI build since it always implements its
own arc4random() implementation on non-FreeBSD OS
(meaning always on Linux).

So instead add a CONFIG_HAVE_ARC4RANDOM and remove
the explicit FreeBSD dependency - this will work on
FreeBSD as well as Linux with >= glibc 2.36.

Also fix check_format.sh, so that it does not
enforce spdk/stdinc.h checks on code snippets in
the configure file.

Fixes issue #2637.

Reported-by: default avatarKarl Bonde Torp <k.torp@samsung.com>
Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: Iab9da8ae30d62a56869530846372ffddf7138eed
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14028


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarDong Yi <dongx.yi@intel.com>
parent eda407a6
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -180,6 +180,9 @@ CONFIG_USDT=n
# In this mode, SPDK shares the DSA device with the kernel.
CONFIG_IDXD_KERNEL=n

# arc4random is available in stdlib.h
CONFIG_HAVE_ARC4RANDOM=n

# Is DPDK using libbsd?
CONFIG_HAVE_LIBBSD=n

+5 −0
Original line number Diff line number Diff line
@@ -1065,6 +1065,11 @@ if [[ "${CONFIG[TSAN]}" = "y" ]]; then
	fi
fi

if echo -e '#include <stdlib.h>\nint main(void) { arc4random(); return 0; }\n' \
	| "${BUILD_CMD[@]}" - 2> /dev/null; then
	CONFIG[HAVE_ARC4RANDOM]="y"
fi

if [[ "${CONFIG[OCF]}" = "y" ]]; then
	# If OCF_PATH is a file, assume it is a library and use it to compile with
	if [ -f ${CONFIG[OCF_PATH]} ]; then
+2 −3
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@

#ifdef __FreeBSD__
#define HAVE_SRANDOMDEV 1
#define HAVE_ARC4RANDOM 1
#endif

struct spdk_iscsi_globals g_iscsi = {
@@ -69,7 +68,7 @@ srandomdev(void)
}
#endif /* HAVE_SRANDOMDEV */

#ifndef HAVE_ARC4RANDOM
#ifndef SPDK_CONFIG_HAVE_ARC4RANDOM
static int g_arc4random_initialized = 0;

static uint32_t
@@ -87,7 +86,7 @@ arc4random(void)
	r = (r1 << 16) | r2;
	return r;
}
#endif /* HAVE_ARC4RANDOM */
#endif /* SPDK_CONFIG_HAVE_ARC4RANDOM */

static void
gen_random(uint8_t *buf, size_t len)
+1 −1
Original line number Diff line number Diff line
@@ -274,7 +274,7 @@ function check_posix_includes() {
	local rc=0

	echo -n "Checking for POSIX includes..."
	git grep -I -i -f scripts/posix.txt -- './*' ':!include/spdk/stdinc.h' ':!include/linux/**' ':!lib/rte_vhost*/**' ':!scripts/posix.txt' ':!*.patch' > scripts/posix.log || true
	git grep -I -i -f scripts/posix.txt -- './*' ':!include/spdk/stdinc.h' ':!include/linux/**' ':!lib/rte_vhost*/**' ':!scripts/posix.txt' ':!*.patch' ':!configure' > scripts/posix.log || true
	if [ -s scripts/posix.log ]; then
		echo "POSIX includes detected. Please include spdk/stdinc.h instead."
		cat scripts/posix.log