Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jul 2004 09:37:12 -0700
From:      "John Merryweather Cooper" <johnmary@adelphia.net>
To:        "FreeBSD gnats submit" <FreeBSD-gnats-submit@freebsd.org>
Cc:        freebsd-gnome@freebsd.org
Subject:   [MAINTAINER-UPDATE] Patch x11-toolkits/gtk-sharp to 1.0_1
Message-ID:  <1089909432.0@68-169-191-150.losaca.adelphia.net>

next in thread | raw e-mail | index | archive | help

>Submitter-Id:	current-users 
>Originator:	John Merryweather Cooper 
>Organization:	 
>Confidential:	no 
>Synopsis:	[MAINTAINER-UPDATE] Patch x11-toolkits/gtk-sharp to 1.0_1 
>Severity:	non-critical 
>Priority:	low 
>Category:	ports 
>Class:		maintainer-update 
>Release:	FreeBSD 5.2-CURRENT i386 
>Environment:


System: FreeBSD 5.2-CURRENT #7: Thu Jul 15 00:40:49 PDT 2004
    root@68-169-191-150.losaca.adelphia.net:/usr/obj/usr/src/sys/ATHLON-TBIRD



>Description:


Patch XML to eliminate a Gnome 2.2-ism.  The ABI numbers and file names were mostly wrong for Gnome 2.6.x.

NOTE TO ALL GNOME COMMITTERS:  Until x11-toolkits/gtk-sharp has a more stable way of determining filenames/ABI numbers, any changes to shared object filenames/ABI numbers threaten to INSTANTLY BREAK this port.  Please notify me or update the relevant XML (see files/patches-* for examples.


>How-To-Repeat:


comms/gfax 0.6.4 would not work without these patches.  Now it works perfectly on -CURRENT.



>Fix:


--- update-gtk-sharp-1.0_1 begins here ---
# WARNING:  Not tested on -STABLE (tested on -CURRENT).
# Fix Gnome 2.2-ism, the shared library file names are HARD CODED into the XML fed to the code generator.  Update the ABI numbers and file names to match what is in the tree for Gnome 2.6.x.
# NOTE TO GNOME COMMITTERS:  If any of the ABI numbers or file names change for the GTK+/Gnome stuff, then the patches to x11-toolkits/gtk-sharp need to be updated or x11-toolkits/gtk-sharp will be INSTANTLY BROKEN.
# With this patch, comms/gfax (the C# version) WORKS!
# 
# To apply this patch:
# STEP 1: Chdir to the source directory.
# STEP 2: Run the 'applypatch' program with this patch file as input.
#
# If you do not have 'applypatch', it is part of the 'makepatch' package
# that you can fetch from the Comprehensive Perl Archive Network:
# http://www.perl.com/CPAN/authors/Johan_Vromans/makepatch-x.y.tar.gz
# In the above URL, 'x' should be 2 or higher.
#
# To apply this patch without the use of 'applypatch':
# STEP 1: Chdir to the source directory.
# If you have a decent Bourne-type shell:
# STEP 2: Run the shell with this file as input.
# If you don't have such a shell, you may need to manually create
# the files as shown below.
# STEP 3: Run the 'patch' program with this file as input.
#
# These are the commands needed to create/delete files/directories:
#
touch 'config_list'
chmod 0644 'config_list'
touch 'files/patch-art_art-sharp.dll.config.in'
chmod 0644 'files/patch-art_art-sharp.dll.config.in'
touch 'files/patch-atk_atk-sharp.dll.config.in'
chmod 0644 'files/patch-atk_atk-sharp.dll.config.in'
touch 'files/patch-gconf_GConf_gconf-sharp.dll.config.in'
chmod 0644 'files/patch-gconf_GConf_gconf-sharp.dll.config.in'
touch 'files/patch-gda_gda-sharp.dll.config.in'
chmod 0644 'files/patch-gda_gda-sharp.dll.config.in'
touch 'files/patch-gdk_gdk-sharp.dll.config.in'
chmod 0644 'files/patch-gdk_gdk-sharp.dll.config.in'
touch 'files/patch-glib_glib-sharp.dll.config.in'
chmod 0644 'files/patch-glib_glib-sharp.dll.config.in'
touch 'files/patch-gnome_gnome-sharp.dll.config.in'
chmod 0644 'files/patch-gnome_gnome-sharp.dll.config.in'
touch 'files/patch-gtk_gtk-sharp.dll.config.in'
chmod 0644 'files/patch-gtk_gtk-sharp.dll.config.in'
touch 'files/patch-pango_pango-sharp.dll.config.in'
chmod 0644 'files/patch-pango_pango-sharp.dll.config.in'
touch 'files/patch-rsvg_rsvg-sharp.dll.config.in'
chmod 0644 'files/patch-rsvg_rsvg-sharp.dll.config.in'
touch 'files/patch-vte_vte-sharp.dll.config.in'
chmod 0644 'files/patch-vte_vte-sharp.dll.config.in'
#
# This command terminates the shell and need not be executed manually.
exit
#
#### End of Preamble ####

#### Patch data follows ####
diff -u '/usr/ports/x11-toolkits/gtk-sharp/Makefile' '/usr/ports/local/gtk-sharp/Makefile'
Index: ./Makefile
--- ./Makefile	Wed Jul 14 19:37:32 2004
+++ ./Makefile	Wed Jul 14 20:55:45 2004
@@ -2,11 +2,12 @@
 # Date created:         2003-01-01
 # Whom:                 Juli Mallett
 #
-# $FreeBSD: ports/x11-toolkits/gtk-sharp/Makefile,v 1.22 2004/07/14 22:44:23 pav Exp $
+# $FreeBSD$
 #
 
 PORTNAME=	gtk-sharp
 PORTVERSION=	1.0
+PORTREVISION=	1
 CATEGORIES=	x11-toolkits
 MASTER_SITES=	http://mono2.ximian.com/archive/${PORTVERSION}/
 
diff -u /dev/null '/usr/ports/local/gtk-sharp/config_list'
Index: ./config_list
--- ./config_list	Wed Dec 31 16:00:00 1969
+++ ./config_list	Wed Jul 14 21:01:08 2004
@@ -0,0 +1,14 @@
+./art/art-sharp.dll.config.in
+./atk/atk-sharp.dll.config.in
+./gconf/GConf/gconf-sharp.dll.config.in
+./gda/gda-sharp.dll.config.in
+./gdk/gdk-sharp.dll.config.in
+./glade/glade-sharp.dll.config.in
+./glib/glib-sharp.dll.config.in
+./gnome/gnome-sharp.dll.config.in
+./gnomedb/gnomedb-sharp.dll.config.in
+./gtk/gtk-sharp.dll.config.in
+./gtkhtml/gtkhtml-sharp.dll.config.in
+./pango/pango-sharp.dll.config.in
+./rsvg/rsvg-sharp.dll.config.in
+./vte/vte-sharp.dll.config.in
diff -u /dev/null '/usr/ports/local/gtk-sharp/files/patch-art_art-sharp.dll.config.in'
Index: ./files/patch-art_art-sharp.dll.config.in
--- ./files/patch-art_art-sharp.dll.config.in	Wed Dec 31 16:00:00 1969
+++ ./files/patch-art_art-sharp.dll.config.in	Wed Jul 14 21:51:11 2004
@@ -0,0 +1,7 @@
+--- art/art-sharp.dll.config.in.orig	Wed Jul 14 21:48:30 2004
++++ art/art-sharp.dll.config.in	Wed Jul 14 21:49:46 2004
+@@ -1,3 +1,3 @@
+ <configuration>
+-  <dllmap dll="art_lgpl" target="libart_lgpl_2@LIB_PREFIX@.2@LIB_SUFFIX@"/>
++  <dllmap dll="art_lgpl" target="libart_lgpl@LIB_PREFIX@.5@LIB_SUFFIX@"/>
+ </configuration>
diff -u /dev/null '/usr/ports/local/gtk-sharp/files/patch-atk_atk-sharp.dll.config.in'
Index: ./files/patch-atk_atk-sharp.dll.config.in
--- ./files/patch-atk_atk-sharp.dll.config.in	Wed Dec 31 16:00:00 1969
+++ ./files/patch-atk_atk-sharp.dll.config.in	Wed Jul 14 21:53:14 2004
@@ -0,0 +1,7 @@
+--- atk/atk-sharp.dll.config.in.orig	Wed Jul 14 21:51:46 2004
++++ atk/atk-sharp.dll.config.in	Wed Jul 14 21:52:14 2004
+@@ -1,3 +1,3 @@
+ <configuration>
+-  <dllmap dll="libatk-1.0-0.dll" target="libatk-1.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
++  <dllmap dll="libatk-1.0-0.dll" target="libatk-1.0@LIB_PREFIX@.600@LIB_SUFFIX@"/>
+ </configuration>
diff -u /dev/null '/usr/ports/local/gtk-sharp/files/patch-gconf_GConf_gconf-sharp.dll.config.in'
Index: ./files/patch-gconf_GConf_gconf-sharp.dll.config.in
--- ./files/patch-gconf_GConf_gconf-sharp.dll.config.in	Wed Dec 31 16:00:00 1969
+++ ./files/patch-gconf_GConf_gconf-sharp.dll.config.in	Wed Jul 14 21:58:34 2004
@@ -0,0 +1,7 @@
+--- gconf/GConf/gconf-sharp.dll.config.in.orig	Wed Jul 14 21:54:59 2004
++++ gconf/GConf/gconf-sharp.dll.config.in	Wed Jul 14 21:57:00 2004
+@@ -1,3 +1,3 @@
+ <configuration>
+-  <dllmap dll="gconf-2" target="libgconf-2@LIB_PREFIX@.4@LIB_SUFFIX@"/>
++  <dllmap dll="gconf-2" target="libgconf-2@LIB_PREFIX@.5@LIB_SUFFIX@"/>
+ </configuration>
diff -u /dev/null '/usr/ports/local/gtk-sharp/files/patch-gda_gda-sharp.dll.config.in'
Index: ./files/patch-gda_gda-sharp.dll.config.in
--- ./files/patch-gda_gda-sharp.dll.config.in	Wed Dec 31 16:00:00 1969
+++ ./files/patch-gda_gda-sharp.dll.config.in	Wed Jul 14 22:14:01 2004
@@ -0,0 +1,7 @@
+--- gda/gda-sharp.dll.config.in.orig	Wed Jul 14 22:12:50 2004
++++ gda/gda-sharp.dll.config.in	Wed Jul 14 22:13:11 2004
+@@ -1,3 +1,3 @@
+ <configuration>
+-  <dllmap dll="gda-2" target="libgda-2@LIB_PREFIX@.1@LIB_SUFFIX@"/>
++  <dllmap dll="gda-2" target="libgda-2@LIB_PREFIX@.2@LIB_SUFFIX@"/>
+ </configuration>
diff -u /dev/null '/usr/ports/local/gtk-sharp/files/patch-gdk_gdk-sharp.dll.config.in'
Index: ./files/patch-gdk_gdk-sharp.dll.config.in
--- ./files/patch-gdk_gdk-sharp.dll.config.in	Wed Dec 31 16:00:00 1969
+++ ./files/patch-gdk_gdk-sharp.dll.config.in	Wed Jul 14 22:17:14 2004
@@ -0,0 +1,13 @@
+--- gdk/gdk-sharp.dll.config.in.orig	Wed Jul 14 22:14:38 2004
++++ gdk/gdk-sharp.dll.config.in	Wed Jul 14 22:15:47 2004
+@@ -1,6 +1,6 @@
+ <configuration>
+-  <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="libgdk-win32-2.0-0.dll" target="libgdk-x11-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="libgdk_pixbuf-2.0-0.dll" target="libgdk_pixbuf-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
++  <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
++  <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
++  <dllmap dll="libgdk-win32-2.0-0.dll" target="libgdk-x11-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
++  <dllmap dll="libgdk_pixbuf-2.0-0.dll" target="libgdk_pixbuf-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
+ </configuration>
diff -u /dev/null '/usr/ports/local/gtk-sharp/files/patch-glib_glib-sharp.dll.config.in'
Index: ./files/patch-glib_glib-sharp.dll.config.in
--- ./files/patch-glib_glib-sharp.dll.config.in	Wed Dec 31 16:00:00 1969
+++ ./files/patch-glib_glib-sharp.dll.config.in	Wed Jul 14 22:19:23 2004
@@ -0,0 +1,11 @@
+--- glib/glib-sharp.dll.config.in.orig	Wed Jul 14 22:17:54 2004
++++ glib/glib-sharp.dll.config.in	Wed Jul 14 22:18:28 2004
+@@ -1,5 +1,5 @@
+ <configuration>
+-  <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="libgthread-2.0-0.dll" target="libgthread-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
++  <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
++  <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
++  <dllmap dll="libgthread-2.0-0.dll" target="libgthread-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
+ </configuration>
diff -u /dev/null '/usr/ports/local/gtk-sharp/files/patch-gnome_gnome-sharp.dll.config.in'
Index: ./files/patch-gnome_gnome-sharp.dll.config.in
--- ./files/patch-gnome_gnome-sharp.dll.config.in	Wed Dec 31 16:00:00 1969
+++ ./files/patch-gnome_gnome-sharp.dll.config.in	Wed Jul 14 22:22:54 2004
@@ -0,0 +1,23 @@
+--- gnome/gnome-sharp.dll.config.in.orig	Wed Jul 14 22:20:21 2004
++++ gnome/gnome-sharp.dll.config.in	Wed Jul 14 22:21:54 2004
+@@ -1,11 +1,11 @@
+ <configuration>
+-  <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="libgthread-2.0-0.dll" target="libgthread-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="libgtk-win32-2.0-0.dll" target="libgtk-x11-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="gnome-2" target="libgnome-2@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="gnomecanvas-2" target="libgnomecanvas-2@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="gnomeprint-2-2" target="libgnomeprint-2-2@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="gnomeprintui-2-2" target="libgnomeprintui-2-2@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="gnomeui-2" target="libgnomeui-2@LIB_PREFIX@.0@LIB_SUFFIX@"/>
++  <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
++  <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
++  <dllmap dll="libgthread-2.0-0.dll" target="libgthread-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
++  <dllmap dll="libgtk-win32-2.0-0.dll" target="libgtk-x11-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
++  <dllmap dll="gnome-2" target="libgnome-2@LIB_PREFIX@.600@LIB_SUFFIX@"/>
++  <dllmap dll="gnomecanvas-2" target="libgnomecanvas-2@LIB_PREFIX@.600@LIB_SUFFIX@"/>
++  <dllmap dll="gnomeprint-2-2" target="libgnomeprint-2-2@LIB_PREFIX@.1@LIB_SUFFIX@"/>
++  <dllmap dll="gnomeprintui-2-2" target="libgnomeprintui-2-2@LIB_PREFIX@.1@LIB_SUFFIX@"/>
++  <dllmap dll="gnomeui-2" target="libgnomeui-2@LIB_PREFIX@.600@LIB_SUFFIX@"/>
+ </configuration>
diff -u /dev/null '/usr/ports/local/gtk-sharp/files/patch-gtk_gtk-sharp.dll.config.in'
Index: ./files/patch-gtk_gtk-sharp.dll.config.in
--- ./files/patch-gtk_gtk-sharp.dll.config.in	Wed Dec 31 16:00:00 1969
+++ ./files/patch-gtk_gtk-sharp.dll.config.in	Wed Jul 14 22:25:08 2004
@@ -0,0 +1,13 @@
+--- gtk/gtk-sharp.dll.config.in.orig	Wed Jul 14 22:23:27 2004
++++ gtk/gtk-sharp.dll.config.in	Wed Jul 14 22:24:17 2004
+@@ -1,6 +1,6 @@
+ <configuration>
+-  <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="libatk-1.0-0.dll" target="libatk-1.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="libgtk-win32-2.0-0.dll" target="libgtk-x11-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
++  <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
++  <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
++  <dllmap dll="libatk-1.0-0.dll" target="libatk-1.0@LIB_PREFIX@.600@LIB_SUFFIX@"/>
++  <dllmap dll="libgtk-win32-2.0-0.dll" target="libgtk-x11-2.0@LIB_PREFIX@.400@LIB_SUFFIX@"/>
+ </configuration>
diff -u /dev/null '/usr/ports/local/gtk-sharp/files/patch-pango_pango-sharp.dll.config.in'
Index: ./files/patch-pango_pango-sharp.dll.config.in
--- ./files/patch-pango_pango-sharp.dll.config.in	Wed Dec 31 16:00:00 1969
+++ ./files/patch-pango_pango-sharp.dll.config.in	Wed Jul 14 22:27:05 2004
@@ -0,0 +1,7 @@
+--- pango/pango-sharp.dll.config.in.orig	Wed Jul 14 22:25:54 2004
++++ pango/pango-sharp.dll.config.in	Wed Jul 14 22:26:14 2004
+@@ -1,3 +1,3 @@
+ <configuration>
+-  <dllmap dll="libpango-1.0-0.dll" target="libpango-1.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
++  <dllmap dll="libpango-1.0-0.dll" target="libpango-1.0@LIB_PREFIX@.399@LIB_SUFFIX@"/>
+ </configuration>
diff -u /dev/null '/usr/ports/local/gtk-sharp/files/patch-rsvg_rsvg-sharp.dll.config.in'
Index: ./files/patch-rsvg_rsvg-sharp.dll.config.in
--- ./files/patch-rsvg_rsvg-sharp.dll.config.in	Wed Dec 31 16:00:00 1969
+++ ./files/patch-rsvg_rsvg-sharp.dll.config.in	Wed Jul 14 22:29:23 2004
@@ -0,0 +1,7 @@
+--- rsvg/rsvg-sharp.dll.config.in.orig	Wed Jul 14 22:28:11 2004
++++ rsvg/rsvg-sharp.dll.config.in	Wed Jul 14 22:28:29 2004
+@@ -1,3 +1,3 @@
+ <configuration>
+-  <dllmap dll="rsvg-2" target="librsvg-2@LIB_PREFIX@.2@LIB_SUFFIX@"/>
++  <dllmap dll="rsvg-2" target="librsvg-2@LIB_PREFIX@.8@LIB_SUFFIX@"/>
+ </configuration>
diff -u /dev/null '/usr/ports/local/gtk-sharp/files/patch-vte_vte-sharp.dll.config.in'
Index: ./files/patch-vte_vte-sharp.dll.config.in
--- ./files/patch-vte_vte-sharp.dll.config.in	Wed Dec 31 16:00:00 1969
+++ ./files/patch-vte_vte-sharp.dll.config.in	Wed Jul 14 22:31:04 2004
@@ -0,0 +1,9 @@
+--- vte/vte-sharp.dll.config.in.orig	Wed Jul 14 22:29:44 2004
++++ vte/vte-sharp.dll.config.in	Wed Jul 14 22:30:14 2004
+@@ -1,4 +1,4 @@
+ <configuration>
+-  <dllmap dll="libatk-1.0-0.dll" target="libatk-1.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+-  <dllmap dll="vte" target="libvte@LIB_PREFIX@.4@LIB_SUFFIX@"/>
++  <dllmap dll="libatk-1.0-0.dll" target="libatk-1.0@LIB_PREFIX@.600@LIB_SUFFIX@"/>
++  <dllmap dll="vte" target="libvte@LIB_PREFIX@.8@LIB_SUFFIX@"/>
+ </configuration>
#### End of Patch data ####

#### ApplyPatch data follows ####
# Data version        : 1.0
# Date generated      : Thu Jul 15 09:27:03 2004
# Generated by        : makepatch 2.00
# Recurse directories : Yes
# p 'Makefile' 784 1089863745 0100644
# c 'config_list' 0 1089864068 0100644
# c 'files/patch-art_art-sharp.dll.config.in' 0 1089867071 0100644
# c 'files/patch-atk_atk-sharp.dll.config.in' 0 1089867194 0100644
# c 'files/patch-gconf_GConf_gconf-sharp.dll.config.in' 0 1089867514 0100644
# c 'files/patch-gda_gda-sharp.dll.config.in' 0 1089868441 0100644
# c 'files/patch-gdk_gdk-sharp.dll.config.in' 0 1089868634 0100644
# c 'files/patch-glib_glib-sharp.dll.config.in' 0 1089868763 0100644
# c 'files/patch-gnome_gnome-sharp.dll.config.in' 0 1089868974 0100644
# c 'files/patch-gtk_gtk-sharp.dll.config.in' 0 1089869108 0100644
# c 'files/patch-pango_pango-sharp.dll.config.in' 0 1089869225 0100644
# c 'files/patch-rsvg_rsvg-sharp.dll.config.in' 0 1089869363 0100644
# c 'files/patch-vte_vte-sharp.dll.config.in' 0 1089869464 0100644
#### End of ApplyPatch data ####

#### End of Patch kit [created: Thu Jul 15 09:27:03 2004] ####
#### Checksum: 281 15087 22341 ####
--- update-gtk-sharp-1.0_1 ends here ---





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