Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Nov 2014 13:14:05 +0000 (UTC)
From:      Koop Mast <kwm@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r373483 - in head: graphics/libEGL graphics/libGL graphics/libGL/files graphics/libGL/files-old graphics/libglesv2 x11/nvidia-driver x11/nvidia-driver/files
Message-ID:  <201411271314.sARDE500026269@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kwm
Date: Thu Nov 27 13:14:04 2014
New Revision: 373483
URL: https://svnweb.freebsd.org/changeset/ports/373483
QAT: https://qat.redports.org/buildarchive/r373483/

Log:
  Fix libEGL and libGLESv2 conflict between libEGL/libglesv2 and the
  nvidia-driver port in the same fashion it was done as the conflict
  with the libGL port.
  
  Mesa ports:
  Add pkg-[de]install scripts to handle the symlinks in the libEGL
    and libglesv2 port.
  Move pkg-[de]install scripts of libGL out of files/
  Put the real mesa libraries into lib/.mesa so we don't have each
    port create a directory for it own use.
  
  Nvidia-driver:
  Only apply the libEGL.so and libGLESv2.so alternative install
    directory if nvidia-driver actually ships them. Copied from
    PR submitter, since it was much cleaner then my initial attempt.
  Make pkg-install script check if the nvidia-driver port installed
    the libEGL/libglesv2 libraries and only then make the symlinks.
    This should allow the script to work with the slave ports which
    don't install these libraries.
  Make the pkg-deinstall script check if the mesa version of
   the libEGL/libGLESv2 libraries are installed before trying to
   recreate the symlinks of those ports.
  
  PR:		194924
  Submitted by:	Gerard Seibert <gerard_seibert@outlook.com>
  Approved by:	portmgr (angrybapt)

Added:
  head/graphics/libEGL/pkg-deinstall   (contents, props changed)
  head/graphics/libEGL/pkg-install   (contents, props changed)
  head/graphics/libGL/pkg-deinstall
     - copied unchanged from r373478, head/graphics/libGL/files/pkg-deinstall.in
  head/graphics/libGL/pkg-install
     - copied, changed from r373478, head/graphics/libGL/files/pkg-install.in
  head/graphics/libglesv2/pkg-deinstall   (contents, props changed)
  head/graphics/libglesv2/pkg-install   (contents, props changed)
Deleted:
  head/graphics/libGL/files-old/pkg-deinstall.in
  head/graphics/libGL/files-old/pkg-install.in
  head/graphics/libGL/files/pkg-deinstall.in
  head/graphics/libGL/files/pkg-install.in
Modified:
  head/graphics/libEGL/Makefile
  head/graphics/libEGL/pkg-plist
  head/graphics/libGL/Makefile
  head/graphics/libGL/bsd.mesalib.mk
  head/graphics/libGL/pkg-plist
  head/graphics/libglesv2/Makefile
  head/graphics/libglesv2/pkg-plist
  head/x11/nvidia-driver/Makefile
  head/x11/nvidia-driver/files/pkg-deinstall.in
  head/x11/nvidia-driver/files/pkg-install.in
  head/x11/nvidia-driver/pkg-plist

Modified: head/graphics/libEGL/Makefile
==============================================================================
--- head/graphics/libEGL/Makefile	Thu Nov 27 12:58:59 2014	(r373482)
+++ head/graphics/libEGL/Makefile	Thu Nov 27 13:14:04 2014	(r373483)
@@ -31,9 +31,9 @@ INSTALL_WRKSRC=	${WRKSRC}/src/egl
 .endif
 
 .if defined(WITH_NEW_MESA)
-LIBEGL_REVISION=	0
+LIBEGL_REVISION=	1
 .else
-LIBEGL_REVISION=	4
+LIBEGL_REVISION=	5
 .endif
 
 .if defined(WITH_NEW_MESA)
@@ -53,4 +53,9 @@ egl-do-install:
 . endfor
 .endif
 
+post-install:
+	@${MKDIR} ${STAGEDIR}${PREFIX}/lib/.mesa
+	@${MV} ${STAGEDIR}${PREFIX}/lib/libEGL* \
+		${STAGEDIR}${PREFIX}/lib/.mesa/
+
 .include <bsd.port.mk>

Added: head/graphics/libEGL/pkg-deinstall
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/graphics/libEGL/pkg-deinstall	Thu Nov 27 13:14:04 2014	(r373483)
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+PREFIX="${PKG_PREFIX-/usr/local}"
+
+case $2 in
+DEINSTALL)
+	/bin/rm -f ${PREFIX}/lib/libEGL.so*
+	;;
+esac

Added: head/graphics/libEGL/pkg-install
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/graphics/libEGL/pkg-install	Thu Nov 27 13:14:04 2014	(r373483)
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+PREFIX="${PKG_PREFIX-/usr/local}"
+
+case $2 in
+POST-INSTALL)
+	if [ -f ${PREFIX}/lib/.nvidia/libEGL.so.1 ]; then
+	  /bin/ln -f ${PREFIX}/lib/.nvidia/libEGL.so.1 ${PREFIX}/lib/libEGL.so
+	  /bin/ln -f ${PREFIX}/lib/.nvidia/libEGL.so.1 ${PREFIX}/lib/libEGL.so.1
+	else
+	  /bin/ln -f ${PREFIX}/lib/.mesa/libEGL.so.1.0.0 ${PREFIX}/lib/libEGL.so
+	  /bin/ln -f ${PREFIX}/lib/.mesa/libEGL.so.1.0.0 ${PREFIX}/lib/libEGL.so.1
+	  /bin/ln -f ${PREFIX}/lib/.mesa/libEGL.so.1.0.0 ${PREFIX}/lib/libEGL.so.1.0.0
+	fi
+	;;
+esac

Modified: head/graphics/libEGL/pkg-plist
==============================================================================
--- head/graphics/libEGL/pkg-plist	Thu Nov 27 12:58:59 2014	(r373482)
+++ head/graphics/libEGL/pkg-plist	Thu Nov 27 13:14:04 2014	(r373483)
@@ -4,7 +4,7 @@ include/EGL/eglext.h
 include/EGL/eglmesaext.h
 include/EGL/eglplatform.h
 include/KHR/khrplatform.h
-lib/libEGL.so
-lib/libEGL.so.1
-lib/libEGL.so.1.0.0
+lib/.mesa/libEGL.so
+lib/.mesa/libEGL.so.1
+lib/.mesa/libEGL.so.1.0.0
 libdata/pkgconfig/egl.pc

Modified: head/graphics/libGL/Makefile
==============================================================================
--- head/graphics/libGL/Makefile	Thu Nov 27 12:58:59 2014	(r373482)
+++ head/graphics/libGL/Makefile	Thu Nov 27 13:14:04 2014	(r373483)
@@ -15,15 +15,13 @@ LIB_DEPENDS+=	libdrm.so:${PORTSDIR}/grap
 USE_XORG=	glproto x11 xext xxf86vm xdamage xfixes dri2proto:both \
 		presentproto xshmfence
 
-SUB_FILES=	pkg-install pkg-deinstall
-
 .include <bsd.port.options.mk>
 .include "${.CURDIR}/bsd.mesalib.mk"
 
 .if defined(WITH_NEW_MESA)
-LIBGLREVISION=	0
+LIBGLREVISION=	1
 .else
-LIBGLREVISION=	3
+LIBGLREVISION=	4
 .endif
 
 .if !(${ARCH} == "amd64" || ${ARCH} == "i386")
@@ -31,8 +29,8 @@ CONFIGURE_ARGS+=--disable-gallium-intel
 .endif
 
 post-install:
-	@${MKDIR} ${STAGEDIR}${PREFIX}/lib/.libGL
+	@${MKDIR} ${STAGEDIR}${PREFIX}/lib/.mesa
 	@${MV} ${STAGEDIR}${PREFIX}/lib/libGL* \
-		${STAGEDIR}${PREFIX}/lib/.libGL/
+		${STAGEDIR}${PREFIX}/lib/.mesa/
 
 .include <bsd.port.mk>

Modified: head/graphics/libGL/bsd.mesalib.mk
==============================================================================
--- head/graphics/libGL/bsd.mesalib.mk	Thu Nov 27 12:58:59 2014	(r373482)
+++ head/graphics/libGL/bsd.mesalib.mk	Thu Nov 27 13:14:04 2014	(r373483)
@@ -66,6 +66,9 @@ GNU_CONFIGURE=	yes
 CPPFLAGS+=	-isystem${LOCALBASE}/include
 LDFLAGS+=	-Wl,-Y${LOCALBASE}/lib
 
+PKGINSTALL=	${.CURDIR}/pkg-install
+PKGDEINSTALL=	${.CURDIR}/pkg-deinstall
+
 .if ${OSVERSION} < 1000033
 BUILD_DEPENDS+=	${LOCALBASE}/bin/flex:${PORTSDIR}/textproc/flex
 CONFIGURE_ENV+=	ac_cv_prog_LEX=${LOCALBASE}/bin/flex

Copied: head/graphics/libGL/pkg-deinstall (from r373478, head/graphics/libGL/files/pkg-deinstall.in)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/graphics/libGL/pkg-deinstall	Thu Nov 27 13:14:04 2014	(r373483, copy of r373478, head/graphics/libGL/files/pkg-deinstall.in)
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+PREFIX="${PKG_PREFIX-/usr/local}"
+
+case $2 in
+DEINSTALL)
+	/bin/rm -f ${PREFIX}/lib/libGL.so*
+	;;
+esac

Copied and modified: head/graphics/libGL/pkg-install (from r373478, head/graphics/libGL/files/pkg-install.in)
==============================================================================
--- head/graphics/libGL/files/pkg-install.in	Thu Nov 27 10:04:47 2014	(r373478, copy source)
+++ head/graphics/libGL/pkg-install	Thu Nov 27 13:14:04 2014	(r373483)
@@ -11,9 +11,9 @@ POST-INSTALL)
 	  /bin/ln -f ${PREFIX}/lib/.nvidia/libGL.so.1 ${PREFIX}/lib/libGL.so
 	  /bin/ln -f ${PREFIX}/lib/.nvidia/libGL.so.1 ${PREFIX}/lib/libGL.so.1
 	else
-	  /bin/ln -f ${PREFIX}/lib/.libGL/libGL.so.1 ${PREFIX}/lib/libGL.so
-	  /bin/ln -f ${PREFIX}/lib/.libGL/libGL.so.1.2.0 ${PREFIX}/lib/libGL.so.1.2.0
-	  /bin/ln -f ${PREFIX}/lib/.libGL/libGL.so.1 ${PREFIX}/lib/libGL.so.1
+	  /bin/ln -f ${PREFIX}/lib/.mesa/libGL.so.1.2.0 ${PREFIX}/lib/libGL.so
+	  /bin/ln -f ${PREFIX}/lib/.mesa/libGL.so.1.2.0 ${PREFIX}/lib/libGL.so.1
+	  /bin/ln -f ${PREFIX}/lib/.mesa/libGL.so.1.2.0 ${PREFIX}/lib/libGL.so.1.2.0
 	fi
 	;;
 esac

Modified: head/graphics/libGL/pkg-plist
==============================================================================
--- head/graphics/libGL/pkg-plist	Thu Nov 27 12:58:59 2014	(r373482)
+++ head/graphics/libGL/pkg-plist	Thu Nov 27 13:14:04 2014	(r373483)
@@ -10,9 +10,9 @@ include/GL/glxext.h
 include/GL/osmesa.h
 include/GL/wglext.h
 include/GL/wmesa.h
-lib/.libGL/libGL.so
-lib/.libGL/libGL.so.1
-lib/.libGL/libGL.so.1.2.0
+lib/.mesa/libGL.so
+lib/.mesa/libGL.so.1
+lib/.mesa/libGL.so.1.2.0
 @comment lib/libglapi.so
 @comment lib/libglapi.so.0
 @comment lib/libglapi.so.0.0.0

Modified: head/graphics/libglesv2/Makefile
==============================================================================
--- head/graphics/libglesv2/Makefile	Thu Nov 27 12:58:59 2014	(r373482)
+++ head/graphics/libglesv2/Makefile	Thu Nov 27 13:14:04 2014	(r373483)
@@ -20,9 +20,9 @@ USE_XORG+=	glproto dri2proto xext xdamag
 .include "${.CURDIR}/../../graphics/libGL/bsd.mesalib.mk"
 
 .if defined(WITH_NEW_MESA)
-LIBGLES_REVISION=	0
+LIBGLES_REVISION=	1
 .else
-LIBGLES_REVISION=	3
+LIBGLES_REVISION=	4
 .endif
 
 .if defined(WITH_NEW_MESA)
@@ -36,9 +36,13 @@ INSTALL_WRKSRC=	${WRKSRC}/src/mapi/es2ap
 .if !defined(WITH_NEW_MESA)
 pre-build:
 	@cd ${WRKSRC}/src/mapi/shared-glapi && ${MAKE_CMD} ${_MAKE_JOBS}
-.else
-post-install:
-	@${RM} ${STAGEDIR}/${PREFIX}/lib/libglapi*
 .endif
 
+post-install:
+
+post-install:
+	@${MKDIR} ${STAGEDIR}${PREFIX}/lib/.mesa
+	@${MV} ${STAGEDIR}${PREFIX}/lib/libGLESv2.so* \
+		${STAGEDIR}${PREFIX}/lib/.mesa/
+
 .include <bsd.port.mk>

Added: head/graphics/libglesv2/pkg-deinstall
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/graphics/libglesv2/pkg-deinstall	Thu Nov 27 13:14:04 2014	(r373483)
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+PREFIX="${PKG_PREFIX-/usr/local}"
+
+case $2 in
+DEINSTALL)
+	/bin/rm -f ${PREFIX}/lib/libGLESv2.so*
+	;;
+esac

Added: head/graphics/libglesv2/pkg-install
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/graphics/libglesv2/pkg-install	Thu Nov 27 13:14:04 2014	(r373483)
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+PREFIX="${PKG_PREFIX-/usr/local}"
+
+case $2 in
+POST-INSTALL)
+	if [ -f ${PREFIX}/lib/.nvidia/libGLESv2.so.2 ]; then
+	  /bin/ln -f ${PREFIX}/lib/.nvidia/libGLESv2.so.2 ${PREFIX}/lib/libGLESv2.so
+	  /bin/ln -f ${PREFIX}/lib/.nvidia/libGLESv2.so.2 ${PREFIX}/lib/libGLESv2.so.2
+	else
+	  /bin/ln -f ${PREFIX}/lib/.mesa/libGLESv2.so.2.0.0 ${PREFIX}/lib/libGLESv2.so
+	  /bin/ln -f ${PREFIX}/lib/.mesa/libGLESv2.so.2.0.0 ${PREFIX}/lib/libGLESv2.so.2
+	  /bin/ln -f ${PREFIX}/lib/.mesa/libGLESv2.so.2.0.0 ${PREFIX}/lib/libGLESv2.so.2.0.0
+	fi
+	;;
+esac

Modified: head/graphics/libglesv2/pkg-plist
==============================================================================
--- head/graphics/libglesv2/pkg-plist	Thu Nov 27 12:58:59 2014	(r373482)
+++ head/graphics/libglesv2/pkg-plist	Thu Nov 27 13:14:04 2014	(r373483)
@@ -5,7 +5,10 @@ include/GLES3/gl3.h
 %%NEW%%include/GLES3/gl31.h
 include/GLES3/gl3ext.h
 include/GLES3/gl3platform.h
-lib/libGLESv2.so
-lib/libGLESv2.so.2
-lib/libGLESv2.so.2.0.0
+lib/.mesa/libGLESv2.so
+lib/.mesa/libGLESv2.so.2
+lib/.mesa/libGLESv2.so.2.0.0
+@comment lib/libglapi.so
+@comment lib/libglapi.so.0
+@comment lib/libglapi.so.0.0.0
 libdata/pkgconfig/glesv2.pc

Modified: head/x11/nvidia-driver/Makefile
==============================================================================
--- head/x11/nvidia-driver/Makefile	Thu Nov 27 12:58:59 2014	(r373482)
+++ head/x11/nvidia-driver/Makefile	Thu Nov 27 13:14:04 2014	(r373483)
@@ -13,7 +13,7 @@
 PORTNAME=	nvidia-driver
 DISTVERSION?=	340.46
 # Always try to set PORTREVISION as it can be overridden by the slave ports
-PORTREVISION?=	0
+PORTREVISION?=	1
 CATEGORIES=	x11
 MASTER_SITES=	${MASTER_SITE_NVIDIA}
 # MASTER_SITE_SUBDIR has to be set later because it depends on NVVERSION
@@ -241,11 +241,17 @@ post-patch: .SILENT
 	${REINPLACE_CMD} -E 's/(x11).*/\1/ ; /doc/d' ${WRKSRC}/Makefile
 .endif
 # Adjust installation paths of some conflicting files (shared also between
-# libGL and xorg-server) to ease package manager work, esp. with pkgng
+# libGL, libEGL, libglesv2 and xorg-server) to ease package manager work.
 	${REINPLACE_CMD} -e '/LIBDIR/s:xorg/modules/extensions:&/.nvidia:' \
 		${WRKSRC}/x11/extension/Makefile
 	${REINPLACE_CMD} -e '/LIBDIR/s:lib:&/.nvidia:' \
 		${WRKSRC}/lib/libGL/Makefile
+.if ${NVVERSION} >= 331.013
+	${REINPLACE_CMD} -e '/LIBDIR/s:lib:&/.nvidia:' \
+		${WRKSRC}/lib/libEGL/Makefile
+	${REINPLACE_CMD} -e '/LIBDIR/s:lib:&/.nvidia:' \
+		${WRKSRC}/lib/libGLESv2/Makefile
+.endif
 # Do not execute afterinstall target (prevent automatic module registration
 # and "smart" installation of conflicting files heuristics)
 	${REINPLACE_CMD} -e 's/afterinstall/&_dontexecute/' ${WRKSRC}/Makefile

Modified: head/x11/nvidia-driver/files/pkg-deinstall.in
==============================================================================
--- head/x11/nvidia-driver/files/pkg-deinstall.in	Thu Nov 27 12:58:59 2014	(r373482)
+++ head/x11/nvidia-driver/files/pkg-deinstall.in	Thu Nov 27 13:14:04 2014	(r373483)
@@ -10,9 +10,24 @@ DEINSTALL)
 	/bin/rm -f ${PREFIX}/lib/libGL.so*
 	/bin/rm -f ${PREFIX}/lib/xorg/modules/extensions/libglx.so*
 
-	/bin/ln -f ${PREFIX}/lib/.libGL/libGL.so.1 ${PREFIX}/lib/libGL.so
-	/bin/ln -f ${PREFIX}/lib/.libGL/libGL.so.1 ${PREFIX}/lib/libGL.so.1
+	/bin/ln -f ${PREFIX}/lib/.mesa/libGL.so.1.2.0 ${PREFIX}/lib/libGL.so
+	/bin/ln -f ${PREFIX}/lib/.mesa/libGL.so.1.2.0 ${PREFIX}/lib/libGL.so.1
+	/bin/ln -f ${PREFIX}/lib/.mesa/libGL.so.1.2.0 ${PREFIX}/lib/libGL.so.1.2.0
 	/bin/ln -f ${PREFIX}/lib/xorg/modules/extensions/.xorg/libglx.so \
 		${PREFIX}/lib/xorg/modules/extensions/libglx.so
+
+
+	if [ -f ${PREFIX}/lib/.mesa/libEGL.so.1 ]; then
+		/bin/rm -f ${PREFIX}/lib/libEGL.so*
+		/bin/ln -f ${PREFIX}/lib/.mesa/libEGL.so.1.0.0 ${PREFIX}/lib/libEGL.so
+		/bin/ln -f ${PREFIX}/lib/.mesa/libEGL.so.1.0.0 ${PREFIX}/lib/libEGL.so.1
+		/bin/ln -f ${PREFIX}/lib/.mesa/libEGL.so.1.0.0 ${PREFIX}/lib/libEGL.so.1.0.0
+	fi
+	if [ -f ${PREFIX}/lib/.mesa/libGLESv2.so.2 ]; then
+		/bin/rm -f ${PREFIX}/lib/libGLESv2.so*
+		/bin/ln -f ${PREFIX}/lib/.mesa/libGLESv2.so.2.0.0 ${PREFIX}/lib/libGLESv2.so
+		/bin/ln -f ${PREFIX}/lib/.mesa/libGLESv2.so.2.0.0 ${PREFIX}/lib/libGLESv2.so.2
+		/bin/ln -f ${PREFIX}/lib/.mesa/libGLESv2.so.2.0.0 ${PREFIX}/lib/libGLESv2.so.2.0.0
+	fi
 	;;
 esac

Modified: head/x11/nvidia-driver/files/pkg-install.in
==============================================================================
--- head/x11/nvidia-driver/files/pkg-install.in	Thu Nov 27 12:58:59 2014	(r373482)
+++ head/x11/nvidia-driver/files/pkg-install.in	Thu Nov 27 13:14:04 2014	(r373483)
@@ -7,8 +7,19 @@ PREFIX=${PKG_PREFIX-/usr/local}
 
 case $2 in
 POST-INSTALL)
+	/bin/rm -f ${PREFIX}/lib/libGL.so*
 	/bin/ln -f ${PREFIX}/lib/.nvidia/libGL.so.1 ${PREFIX}/lib/libGL.so
 	/bin/ln -f ${PREFIX}/lib/.nvidia/libGL.so.1 ${PREFIX}/lib/libGL.so.1
+	if [ -f ${PREFIX}/lib/.nvidia/libEGL.so.1 ]; then
+		/bin/rm -f ${PREFIX}/lib/libEGL.so*
+		/bin/ln -f ${PREFIX}/lib/.nvidia/libEGL.so.1 ${PREFIX}/lib/libEGL.so
+		/bin/ln -f ${PREFIX}/lib/.nvidia/libEGL.so.1 ${PREFIX}/lib/libEGL.so.1
+	fi
+	if [ -f ${PREFIX}/lib/.nvidia/libGLESv2.so.2 ]; then
+		/bin/rm -f ${PREFIX}/lib/libGLESv2.so*
+		/bin/ln -f ${PREFIX}/lib/.nvidia/libGLESv2.so.2 ${PREFIX}/lib/libGLESv2.so
+		/bin/ln -f ${PREFIX}/lib/.nvidia/libGLESv2.so.2 ${PREFIX}/lib/libGLESv2.so.2
+	fi
 	/bin/ln -f ${PREFIX}/lib/xorg/modules/extensions/.nvidia/libglx.so.1 \
 		${PREFIX}/lib/xorg/modules/extensions/libglx.so
 	;;

Modified: head/x11/nvidia-driver/pkg-plist
==============================================================================
--- head/x11/nvidia-driver/pkg-plist	Thu Nov 27 12:58:59 2014	(r373482)
+++ head/x11/nvidia-driver/pkg-plist	Thu Nov 27 13:14:04 2014	(r373483)
@@ -1,12 +1,12 @@
 bin/nvidia-bug-report.sh
 lib/.nvidia/libGL.so
 lib/.nvidia/libGL.so.1
-lib/libEGL.so
-lib/libEGL.so.1
+lib/.nvidia/libEGL.so
+lib/.nvidia/libEGL.so.1
 lib/libGLESv1_CM.so
 lib/libGLESv1_CM.so.1
-lib/libGLESv2.so
-lib/libGLESv2.so.2
+lib/.nvidia/libGLESv2.so
+lib/.nvidia/libGLESv2.so.2
 lib/libGLcore.so
 lib/libGLcore.so.1
 lib/libXvMCNVIDIA.a



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201411271314.sARDE500026269>