From ebcaa5fcde8411786e3765414465174e6d31c8e6 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Thu, 3 May 2012 10:58:44 -0400
Subject: [PATCH] Remove BSD/OS (BSDi) port.  There are no known users
 upgrading to Postgres 9.2, and perhaps no existing users either.

---
 configure                          |  5 +-
 configure.in                       |  5 +-
 doc/src/sgml/dfunc.sgml            | 18 ------
 doc/src/sgml/installation.sgml     |  9 ++-
 doc/src/sgml/runtime.sgml          | 41 -------------
 src/Makefile.shlib                 | 13 ----
 src/backend/port/dynloader/bsdi.c  | 96 ------------------------------
 src/backend/port/dynloader/bsdi.h  | 50 ----------------
 src/backend/utils/misc/ps_status.c |  2 +-
 src/include/port.h                 |  2 +-
 src/include/port/bsdi.h            |  3 -
 src/makefiles/Makefile.bsdi        | 25 --------
 src/port/fseeko.c                  | 24 +-------
 src/template/bsdi                  |  3 -
 src/tools/find_typedef             |  7 +--
 15 files changed, 13 insertions(+), 290 deletions(-)
 delete mode 100644 src/backend/port/dynloader/bsdi.c
 delete mode 100644 src/backend/port/dynloader/bsdi.h
 delete mode 100644 src/include/port/bsdi.h
 delete mode 100644 src/makefiles/Makefile.bsdi
 delete mode 100644 src/template/bsdi

diff --git a/configure b/configure
index 871f8626c9c..e8ea3801df9 100755
--- a/configure
+++ b/configure
@@ -2190,7 +2190,6 @@ else
 
 case $host_os in
      aix*) template=aix ;;
-    bsdi*) template=bsdi ;;
   cygwin*) template=cygwin ;;
   darwin*) template=darwin ;;
 dragonfly*) template=netbsd ;;
@@ -19489,9 +19488,9 @@ done
 
 
 case $host_os in
-	# BSD/OS & NetBSD use a custom fseeko/ftello built on fsetpos/fgetpos
+	# NetBSD uses a custom fseeko/ftello built on fsetpos/fgetpos
 	# Mingw uses macros to access Win32 API calls
-	bsdi*|netbsd*|mingw*)
+	netbsd*|mingw*)
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_FSEEKO 1
diff --git a/configure.in b/configure.in
index d956c508329..71e70789229 100644
--- a/configure.in
+++ b/configure.in
@@ -55,7 +55,6 @@ PGAC_ARG_REQ(with, template, [NAME], [override operating system template],
 
 case $host_os in
      aix*) template=aix ;;
-    bsdi*) template=bsdi ;;
   cygwin*) template=cygwin ;;
   darwin*) template=darwin ;;
 dragonfly*) template=netbsd ;;
@@ -1211,9 +1210,9 @@ AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getifaddrs getpeerucred getrlimit mem
 
 AC_REPLACE_FUNCS(fseeko)
 case $host_os in
-	# BSD/OS & NetBSD use a custom fseeko/ftello built on fsetpos/fgetpos
+	# NetBSD uses a custom fseeko/ftello built on fsetpos/fgetpos
 	# Mingw uses macros to access Win32 API calls
-	bsdi*|netbsd*|mingw*)
+	netbsd*|mingw*)
 		AC_DEFINE(HAVE_FSEEKO, 1, [Define to 1 because replacement version used.])
 		ac_cv_func_fseeko=yes;;
 	*)
diff --git a/doc/src/sgml/dfunc.sgml b/doc/src/sgml/dfunc.sgml
index 9fd3511b4db..8e6c95d15c5 100644
--- a/doc/src/sgml/dfunc.sgml
+++ b/doc/src/sgml/dfunc.sgml
@@ -55,24 +55,6 @@
 -->
 
   <variablelist>
-   <varlistentry>
-    <term><systemitem class="osname">BSD/OS</></term>
-    <indexterm><primary>BSD/OS</><secondary>shared library</></>
-    <listitem>
-     <para>
-      The compiler flag to create <acronym>PIC</acronym> is
-      <option>-fpic</option>.  The linker flag to create shared
-      libraries is <option>-shared</option>.
-<programlisting>
-gcc -fpic -c foo.c
-ld -shared -o foo.so foo.o
-</programlisting>
-      This is applicable as of version 4.0 of
-      <systemitem class="osname">BSD/OS</>.
-     </para>
-    </listitem>
-   </varlistentry>
-
    <varlistentry>
     <term><systemitem class="osname">FreeBSD</></term>
     <indexterm><primary>FreeBSD</><secondary>shared library</></>
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index 0c92c89ac89..fe043c60847 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -1622,8 +1622,8 @@ PostgreSQL, contrib and HTML documentation successfully made. Ready to install.
     On some systems with shared libraries
     you need to tell the system how to find the newly installed
     shared libraries.  The systems on which this is
-    <emphasis>not</emphasis> necessary include <systemitem
-    class="osname">BSD/OS</>, <systemitem class="osname">FreeBSD</>,
+    <emphasis>not</emphasis> necessary include 
+    <systemitem class="osname">FreeBSD</>,
     <systemitem class="osname">HP-UX</>, <systemitem
     class="osname">IRIX</>, <systemitem class="osname">Linux</>,
     <systemitem class="osname">NetBSD</>, <systemitem
@@ -1682,9 +1682,8 @@ libpq.so.2.1: cannot open shared object file: No such file or directory
     <indexterm>
      <primary>ldconfig</primary>
     </indexterm>
-    If you are on <systemitem class="osname">BSD/OS</>
-    or <systemitem class="osname">Linux</>, and you have root access you can
-    run:
+    If you are on <systemitem class="osname">Linux</> and you have root
+    access, you can run:
 <programlisting>
 /sbin/ldconfig /usr/local/pgsql/lib
 </programlisting>
diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index 5785450e571..05da7235089 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -741,47 +741,6 @@ psql: could not connect to server: No such file or directory
       </listitem>
      </varlistentry>
 
-     <varlistentry>
-      <term><systemitem class="osname">BSD/OS</></term>
-      <indexterm><primary>BSD/OS</><secondary>IPC configuration</></>
-      <listitem>
-       <formalpara>
-        <title>Shared Memory</title>
-        <para>
-         By default, only 4 MB of shared memory is supported. Keep in
-         mind that shared memory is not pageable; it is locked in RAM.
-         To increase the amount of shared memory supported by your
-         system, add something like the following to your kernel configuration
-         file:
-<programlisting>
-options "SHMALL=8192"
-options "SHMMAX=\(SHMALL*PAGE_SIZE\)"
-</programlisting>
-         <varname>SHMALL</> is measured in 4 kB pages, so a value of
-         1024 represents 4 MB of shared memory. Therefore the above increases
-         the maximum shared memory area to 32 MB.
-         For those running 4.3 or later, you will probably also need to increase
-         <varname>KERNEL_VIRTUAL_MB</> above the default <literal>248</>.
-         Once all changes have been made, recompile the kernel, and reboot.
-        </para>
-       </formalpara>
-
-       <formalpara>
-        <title>Semaphores</title>
-        <para>
-         You will probably want to increase the number of semaphores
-         as well; the default system total of 60 will only allow about
-         50 <productname>PostgreSQL</productname> connections.  Set the
-         values you want in your kernel configuration file, e.g.:
-<programlisting>
-options "SEMMNI=40"
-options "SEMMNS=240"
-</programlisting>
-        </para>
-       </formalpara>
-      </listitem>
-     </varlistentry>
-
 
      <varlistentry>
       <term><systemitem class="osname">FreeBSD</></term>
diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index 0304f7a2aa7..294d10f6186 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -157,19 +157,6 @@ ifeq ($(PORTNAME), openbsd)
   endif
 endif
 
-ifeq ($(PORTNAME), bsdi)
-  ifeq ($(DLSUFFIX), .so)
-    LINK.shared		= $(COMPILER) -shared
-    ifdef soname
-      LINK.shared	+= -Wl,-x,-soname,$(soname)
-    endif
-    SHLIB_LINK		+= -lc
-  endif
-  ifeq ($(DLSUFFIX), .o)
-    LINK.shared		= shlicc -O $(LDREL)
-  endif
-endif
-
 ifeq ($(PORTNAME), freebsd)
   ifdef ELF_SYSTEM
     ifdef SO_MAJOR_VERSION
diff --git a/src/backend/port/dynloader/bsdi.c b/src/backend/port/dynloader/bsdi.c
deleted file mode 100644
index cdf7444e112..00000000000
--- a/src/backend/port/dynloader/bsdi.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * dynloader.c
- *	  Dynamic Loader for Postgres for Linux, generated from those for
- *	  Ultrix.
- *
- *	  You need to install the dld library on your Linux system!
- *
- * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *
- * IDENTIFICATION
- *	  src/backend/port/dynloader/bsdi.c
- *
- *-------------------------------------------------------------------------
- */
-#include "postgres.h"
-#ifndef HAVE_DLOPEN
-
-extern char my_exec_path[];
-
-void *
-pg_dlopen(char *filename)
-{
-	static int	dl_initialized = 0;
-
-	/*
-	 * initializes the dynamic loader with the executable's pathname. (only
-	 * needs to do this the first time pg_dlopen is called.)
-	 */
-	if (!dl_initialized)
-	{
-		if (dld_init(dld_find_executable(my_exec_path)))
-			return NULL;
-
-		/*
-		 * if there are undefined symbols, we want dl to search from the
-		 * following libraries also.
-		 */
-		dl_initialized = 1;
-	}
-
-	/*
-	 * link the file, then check for undefined symbols!
-	 */
-	if (dld_link(filename))
-		return NULL;
-
-	/*
-	 * If undefined symbols: try to link with the C and math libraries! This
-	 * could be smarter, if the dynamic linker was able to handle shared libs!
-	 */
-	if (dld_undefined_sym_count > 0)
-	{
-		if (dld_link("/usr/lib/libc.a"))
-		{
-			elog(WARNING, "could not link C library");
-			return NULL;
-		}
-		if (dld_undefined_sym_count > 0)
-		{
-			if (dld_link("/usr/lib/libm.a"))
-			{
-				elog(WARNING, "could not link math library");
-				return NULL;
-			}
-			if (dld_undefined_sym_count > 0)
-			{
-				int			count = dld_undefined_sym_count;
-				char	  **list = dld_list_undefined_sym();
-
-				/* list the undefined symbols, if any */
-				do
-				{
-					elog(WARNING, "\"%s\" is undefined", *list);
-					list++;
-					count--;
-				} while (count > 0);
-
-				dld_unlink_by_file(filename, 1);
-				return NULL;
-			}
-		}
-	}
-
-	return (void *) strdup(filename);
-}
-
-char *
-pg_dlerror()
-{
-	return dld_strerror(dld_errno);
-}
-
-#endif   /* not HAVE_DLOPEN */
diff --git a/src/backend/port/dynloader/bsdi.h b/src/backend/port/dynloader/bsdi.h
deleted file mode 100644
index a4b626bacb0..00000000000
--- a/src/backend/port/dynloader/bsdi.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * bsdi.h
- *		Dynamic loader interface for BSD/OS
- *
- * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- * src/backend/port/dynloader/bsdi.h
- *
- *-------------------------------------------------------------------------
- */
-#ifndef PORT_PROTOS_H
-#define PORT_PROTOS_H
-
-#include "utils/dynamic_loader.h"	/* pgrminclude ignore */
-
-
-#ifdef HAVE_DLOPEN
-
-#include <dlfcn.h>
-
-/*
- * In some older systems, the RTLD_NOW flag isn't defined and the mode
- * argument to dlopen must always be 1.  The RTLD_GLOBAL flag is wanted
- * if available, but it doesn't exist everywhere.
- * If it doesn't exist, set it to 0 so it has no effect.
- */
-#ifndef RTLD_NOW
-#define RTLD_NOW 1
-#endif
-#ifndef RTLD_GLOBAL
-#define RTLD_GLOBAL 0
-#endif
-
-#define		  pg_dlopen(f)	  dlopen((f), RTLD_NOW | RTLD_GLOBAL)
-#define		  pg_dlsym		  dlsym
-#define		  pg_dlclose	  dlclose
-#define		  pg_dlerror	  dlerror
-#else							/* not HAVE_DLOPEN */
-
-#define pg_dlsym(handle, funcname)	  ((PGFunction) dld_get_func((funcname)))
-#define pg_dlclose(handle) \
-do { \
-	dld_unlink_by_file(handle, 1); \
-	free(handle); \
-} while (0)
-#endif   /* not HAVE_DLOPEN */
-
-#endif   /* PORT_PROTOS_H */
diff --git a/src/backend/utils/misc/ps_status.c b/src/backend/utils/misc/ps_status.c
index f1497c63f42..47c47a4e107 100644
--- a/src/backend/utils/misc/ps_status.c
+++ b/src/backend/utils/misc/ps_status.c
@@ -64,7 +64,7 @@ bool		update_process_title = true;
 #define PS_USE_PSTAT
 #elif defined(HAVE_PS_STRINGS)
 #define PS_USE_PS_STRINGS
-#elif (defined(BSD) || defined(__bsdi__) || defined(__hurd__)) && !defined(__darwin__)
+#elif (defined(BSD) || defined(__hurd__)) && !defined(__darwin__)
 #define PS_USE_CHANGE_ARGV
 #elif defined(__linux__) || defined(_AIX) || defined(__sgi) || (defined(sun) && !defined(BSD)) || defined(ultrix) || defined(__ksr__) || defined(__osf__) || defined(__svr5__) || defined(__darwin__)
 #define PS_USE_CLOBBER_ARGV
diff --git a/src/include/port.h b/src/include/port.h
index 37e33c3e2ae..120e402a762 100644
--- a/src/include/port.h
+++ b/src/include/port.h
@@ -367,7 +367,7 @@ extern char *crypt(const char *key, const char *setting);
 /* WIN32 handled in port/win32.h */
 #ifndef WIN32
 #define pgoff_t off_t
-#if defined(__bsdi__) || defined(__NetBSD__)
+#ifdef __NetBSD__
 extern int	fseeko(FILE *stream, off_t offset, int whence);
 extern off_t ftello(FILE *stream);
 #endif
diff --git a/src/include/port/bsdi.h b/src/include/port/bsdi.h
deleted file mode 100644
index 13249f545b7..00000000000
--- a/src/include/port/bsdi.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/*
- * src/include/port/bsdi.h
- */
diff --git a/src/makefiles/Makefile.bsdi b/src/makefiles/Makefile.bsdi
deleted file mode 100644
index e2c9be3dcd0..00000000000
--- a/src/makefiles/Makefile.bsdi
+++ /dev/null
@@ -1,25 +0,0 @@
-AROPT = cr
-
-# bsdi 4.0 and later is ELF
-DLSUFFIX = .so
-ifeq ($(host_os), bsdi2.0)
-DLSUFFIX = .o
-endif
-ifeq ($(host_os), bsdi2.1)
-DLSUFFIX = .o
-endif
-ifeq ($(findstring bsdi3, $(host_os)), bsdi3)
-DLSUFFIX = .o
-endif
-
-ifeq ($(DLSUFFIX), .so)
-CFLAGS_SL = -fpic
-rpath = -Wl,-rpath,'$(rpathdir)'
-export_dynamic = -Wl,-export-dynamic
-else
-CFLAGS_SL =
-endif
-
-# Rule for building a shared library from a single .o file
-%.so: %.o
-	$(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $<
diff --git a/src/port/fseeko.c b/src/port/fseeko.c
index c33d94c1096..882b22599aa 100644
--- a/src/port/fseeko.c
+++ b/src/port/fseeko.c
@@ -17,22 +17,17 @@
  * We have to use the native defines here because configure hasn't
  * completed yet.
  */
-#if defined(__bsdi__) || defined(__NetBSD__)
+#ifdef __NetBSD__
 
 #include "c.h"
 
-#ifdef __bsdi__
-#include <pthread.h>
-#endif
 #include <sys/stat.h>
 
 
 /*
- *	On BSD/OS and NetBSD, off_t and fpos_t are the same.  Standards
+ *	On NetBSD, off_t and fpos_t are the same.  Standards
  *	say off_t is an arithmetic type, but not necessarily integral,
  *	while fpos_t might be neither.
- *
- *	This is thread-safe on BSD/OS using flockfile/funlockfile.
  */
 
 int
@@ -44,17 +39,11 @@ fseeko(FILE *stream, off_t offset, int whence)
 	switch (whence)
 	{
 		case SEEK_CUR:
-#ifdef __bsdi__
-			flockfile(stream);
-#endif
 			if (fgetpos(stream, &floc) != 0)
 				goto failure;
 			floc += offset;
 			if (fsetpos(stream, &floc) != 0)
 				goto failure;
-#ifdef __bsdi__
-			funlockfile(stream);
-#endif
 			return 0;
 			break;
 		case SEEK_SET:
@@ -63,9 +52,6 @@ fseeko(FILE *stream, off_t offset, int whence)
 			return 0;
 			break;
 		case SEEK_END:
-#ifdef __bsdi__
-			flockfile(stream);
-#endif
 			fflush(stream);		/* force writes to fd for stat() */
 			if (fstat(fileno(stream), &filestat) != 0)
 				goto failure;
@@ -73,9 +59,6 @@ fseeko(FILE *stream, off_t offset, int whence)
 			floc += offset;
 			if (fsetpos(stream, &floc) != 0)
 				goto failure;
-#ifdef __bsdi__
-			funlockfile(stream);
-#endif
 			return 0;
 			break;
 		default:
@@ -84,9 +67,6 @@ fseeko(FILE *stream, off_t offset, int whence)
 	}
 
 failure:
-#ifdef __bsdi__
-	funlockfile(stream);
-#endif
 	return -1;
 }
 
diff --git a/src/template/bsdi b/src/template/bsdi
deleted file mode 100644
index dce8fb404ea..00000000000
--- a/src/template/bsdi
+++ /dev/null
@@ -1,3 +0,0 @@
-case $host_os in
-  bsdi2.0 | bsdi2.1 | bsdi3*) CC=gcc2;;
-esac
diff --git a/src/tools/find_typedef b/src/tools/find_typedef
index 8b07de62ef8..3198a453e91 100755
--- a/src/tools/find_typedef
+++ b/src/tools/find_typedef
@@ -8,7 +8,7 @@
 # For this program to work, you must have compiled all binaries with
 # debugging symbols.
 #
-# This is run on BSD/OS 4.0 or Linux, so you may need to make changes.
+# This is run on Linux, so you may need to make changes.
 #
 # Ignore the nm errors about a file not being a binary file.
 #
@@ -52,11 +52,6 @@ do	# if objdump -W is recognized, only one line of error should appear
 		readelf -w "$DIR"/* |
 		egrep -A3 '\(DW_TAG_typedef\)' |
 		awk ' $1 == "DW_AT_name" {print $NF}'
-	else	# BSD/OS
-		# BSD/OS reports all typedefs, even those defined in system
-		# include files but never referenced in the PG code.
-		objdump --stabs "$DIR"/* |
-		awk ' $2 == "LSYM" && $7 ~ /:t/ {sub(":.*", "", $7); print $7}'
 	fi
 done |
 grep -v ' ' | # some typedefs have spaces, remove them
-- 
GitLab