This attempts to provide a nicer error message for the subset of users who build their own kernels without COMPAT_FREEBSD11 and then attempt to build lang/rust. The Rust ecosystem currently uses pre-ino64 syscalls, so building lang/rust without COMPAT_FREEBSD11 is not going to work. The error message for this is non-obvious and there is a new bug for this at least every 1-2 months. Hopefully this will improve the situation a little. Cargo and Gecko ports are similarly affected, so add the pre-build check to them too. Reviewed by: jbeich, mikael.urankar@gmail.com Tested by: madpilot (negative case) Approved by: gecko (jbeich) Differential Revision: https://reviews.freebsd.org/D23100
27 lines
550 B
Bash
27 lines
550 B
Bash
#!/bin/sh
|
|
# MAINTAINER: rust@FreeBSD.org
|
|
# $FreeBSD$
|
|
set -eu
|
|
|
|
if [ "${OPSYS}" != FreeBSD ] || [ "${OSVERSION}" -lt 1200000 ]; then
|
|
exit 0
|
|
fi
|
|
|
|
cat <<EOF | ${CC} -o "${WRKDIR}/compat11_canary" -xc -
|
|
#include <sys/syscall.h>
|
|
#include <errno.h>
|
|
#include <unistd.h>
|
|
|
|
int
|
|
main(void)
|
|
{
|
|
return syscall(SYS_freebsd11_mknod, "", 0, 0) < 0 && errno == ENOSYS;
|
|
}
|
|
EOF
|
|
# Canary might be aborted with SIGSYS
|
|
ulimit -c 0
|
|
if ! "${WRKDIR}/compat11_canary"; then
|
|
echo "=> Sanity check failed: kernel is missing COMPAT_FREEBSD11"
|
|
echo "=> Aborting build"
|
|
exit 1
|
|
fi
|