svn commit: r522968 - in head: Mk Mk/Scripts Mk/Uses lang/rust
Tobias Kortkamp
tobik at FreeBSD.org
Mon Jan 13 18:36:05 UTC 2020
Author: tobik
Date: Mon Jan 13 18:36:04 2020
New Revision: 522968
URL: https://svnweb.freebsd.org/changeset/ports/522968
Log:
lang/rust: Add COMPAT_FREEBSD11 canary
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 at gmail.com
Tested by: madpilot (negative case)
Approved by: gecko (jbeich)
Differential Revision: https://reviews.freebsd.org/D23100
Added:
head/Mk/Scripts/rust-compat11-canary.sh (contents, props changed)
Modified:
head/Mk/Uses/cargo.mk
head/Mk/bsd.gecko.mk
head/lang/rust/Makefile
Added: head/Mk/Scripts/rust-compat11-canary.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/Mk/Scripts/rust-compat11-canary.sh Mon Jan 13 18:36:04 2020 (r522968)
@@ -0,0 +1,27 @@
+#!/bin/sh
+# MAINTAINER: rust at 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
Modified: head/Mk/Uses/cargo.mk
==============================================================================
--- head/Mk/Uses/cargo.mk Mon Jan 13 18:02:29 2020 (r522967)
+++ head/Mk/Uses/cargo.mk Mon Jan 13 18:36:04 2020 (r522968)
@@ -247,6 +247,9 @@ _USES_configure+= 250:cargo-configure
# configure hook. Place a config file for overriding crates-io index
# by local source directory.
cargo-configure:
+# Check that the running kernel has COMPAT_FREEBSD11 required by lang/rust post-ino64
+ @${SETENV} CC="${CC}" OPSYS="${OPSYS}" OSVERSION="${OSVERSION}" WRKDIR="${WRKDIR}" \
+ ${SH} ${SCRIPTSDIR}/rust-compat11-canary.sh
@${MKDIR} ${WRKDIR}/.cargo
@${ECHO_CMD} "[source.cargo]" > ${WRKDIR}/.cargo/config
@${ECHO_CMD} "directory = '${CARGO_VENDOR_DIR}'" >> ${WRKDIR}/.cargo/config
Modified: head/Mk/bsd.gecko.mk
==============================================================================
--- head/Mk/bsd.gecko.mk Mon Jan 13 18:02:29 2020 (r522967)
+++ head/Mk/bsd.gecko.mk Mon Jan 13 18:36:04 2020 (r522968)
@@ -376,6 +376,11 @@ gecko-post-patch:
@${REINPLACE_CMD} 's,"files":{[^}]*},"files":{},' \
${MOZSRC}/third_party/rust/*/.cargo-checksum.json
+pre-configure-script:
+# Check that the running kernel has COMPAT_FREEBSD11 required by lang/rust post-ino64
+ @${SETENV} CC="${CC}" OPSYS="${OPSYS}" OSVERSION="${OSVERSION}" WRKDIR="${WRKDIR}" \
+ ${SH} ${SCRIPTSDIR}/rust-compat11-canary.sh
+
post-install-script: gecko-create-plist
gecko-create-plist:
Modified: head/lang/rust/Makefile
==============================================================================
--- head/lang/rust/Makefile Mon Jan 13 18:02:29 2020 (r522967)
+++ head/lang/rust/Makefile Mon Jan 13 18:36:04 2020 (r522968)
@@ -142,6 +142,9 @@ post-patch-SOURCES-off:
${WRKSRC}/src/bootstrap/install.rs
do-configure:
+# Check that the running kernel has COMPAT_FREEBSD11 required by lang/rust post-ino64
+ @${SETENV} CC="${CC}" OPSYS="${OPSYS}" OSVERSION="${OSVERSION}" WRKDIR="${WRKDIR}" \
+ ${SH} ${SCRIPTSDIR}/rust-compat11-canary.sh
@${ECHO_CMD} '[build]' > ${WRKSRC}/config.toml
@${ECHO_CMD} 'vendor=true' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'extended=true' >> ${WRKSRC}/config.toml
More information about the svn-ports-head
mailing list