mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
Remove QNX port.
This commit is contained in:
229
doc/FAQ_QNX4
229
doc/FAQ_QNX4
@ -1,229 +0,0 @@
|
||||
PostgreSQL on QNX 4
|
||||
--------------------
|
||||
last updated: $Date: 2004/03/23 01:23:47 $
|
||||
|
||||
current maintainer: Bernd Tegge (tegge@repas-aeg.de)
|
||||
original author: Andreas Kardos (kardos@repas-aeg.de)
|
||||
|
||||
This port is an important step because PostgreSQL is still the only free
|
||||
relational database with full SQL and ODBC support available for QNX 4.
|
||||
The only commercial databases available are Empress RDBMS and Velocis
|
||||
Database Server (not supported for Digital Unix).
|
||||
|
||||
The most effort required the emulation of System V semaphore sets,
|
||||
shared memory and IPC and of some IEEE floating-point functionality.
|
||||
|
||||
It is recommended to use the GNU C compiler instead of the Watcom compiler
|
||||
because the Watcom compiler doesn't support a int8 datatype (long or
|
||||
long long int) and it does not have a C++ frontend. The only advantage
|
||||
using Watcom C would be support of Tk and pgaccess.
|
||||
|
||||
QNX 4 does not offer native support of shared libraries. Therefore the related
|
||||
functionality cannot be used. Shared library support could probably be
|
||||
implemented in future.
|
||||
|
||||
QNX 4 does not support UNIX domain sockets. Clients must use TCP/IP
|
||||
sockets. Therefore, do not set "listen_addresses" to empty in your
|
||||
postgresql.conf file. In fact, it's advisable to explicitly set
|
||||
"listen_addresses" in an environment using native QNX networking.
|
||||
Otherwise the postmaster might not use the IP-Address you think it does :-)
|
||||
|
||||
Prerequisites:
|
||||
--------------
|
||||
|
||||
The following prerequisites have been used:
|
||||
|
||||
QNX standard:
|
||||
QNX 4.25, Watcom C 10.6, GNU make
|
||||
|
||||
Available from http://www.teaser.fr/~jcmichot/
|
||||
flex-2.5.4a.tar.gz (flex)
|
||||
egcs-112-qnx4-r20.tar[.gz] (GNU C)
|
||||
|
||||
Available from ftp://ftp.visi.com/users/hawkeyd/qnx/
|
||||
bison-1.2.5.tar.gz
|
||||
|
||||
Available from http://quics.qnx.com/cgi-bin/dir_find.cgi?/usr/free/
|
||||
perl 5.004_04
|
||||
|
||||
from ftp://ftp.freesoftware.com/pub/infozip/zlib/
|
||||
zlib 1.1.3
|
||||
|
||||
tcl8.0.3.tar.Z (Tcl)
|
||||
|
||||
In order to achieve meaningful results for the regression tests, you need
|
||||
a different shell. The standard QNX shell is quite broken with regard to
|
||||
scripting (even QSSL suggested to use pdksh or bash). Both are available
|
||||
in source and binaries at
|
||||
http://quics.qnx.com/cgi-bin/dir_find.cgi?/usr/free/
|
||||
|
||||
flex can be built without any problems using the Watcom or GNU C compilers.
|
||||
|
||||
The current version of bison (1.2.8 at the time of this writing) does not
|
||||
build cleanly on QNX4 with gcc installed, but you can download src and
|
||||
binary of a previous version from the above mentioned ftp site.
|
||||
|
||||
download source
|
||||
GNU C can be installed by
|
||||
/etc/install -u egcs112-qnx4-r20.tar[.gz]
|
||||
|
||||
Although Tcl can be built after some slight code changes using the Watcom
|
||||
compiler, the GNU C compiler should be used instead. Otherwise it would be
|
||||
impossible to link postgres built with GNU C together with libtcl8.0.a built
|
||||
with the Watcom compiler. However, if you are going to build a Watcom version
|
||||
you must build the tcl and tk libraries with Watcom too.
|
||||
|
||||
To make unix/tclUnixTest.c compilable uncomment
|
||||
#include <sys/resource.h>
|
||||
in it or
|
||||
touch /usr/include/sys/resource.h
|
||||
In unix/Makefile.in replace
|
||||
( echo cd $(TOP_DIR)/tests\; source all ) | ./tcltest
|
||||
by
|
||||
( echo cd ../tests\; source all ) | ./tcltest
|
||||
After that Tcl can be built and tested as stated in README.
|
||||
|
||||
Tk cannot be built with GNU C due to the lack of a stack version of the
|
||||
X11 library. With the Watcom compiler Tk could be built but this is not useful
|
||||
because of the link problems mentioned above.
|
||||
|
||||
Therefore the Tk interface and the pgaccess tool cannot be supported for a GNU C
|
||||
version of PostgreSQL on QNX 4.
|
||||
|
||||
PostgreSQL:
|
||||
-----------
|
||||
|
||||
On QNX 4 some headers are not in the directories expected. To avoid
|
||||
modifications of the code the following links should be made:
|
||||
|
||||
ln -s /usr/local/bin/perl /usr/local/bin/perl5
|
||||
ln -s /usr/include/errno.h /usr/include/sys/errno.h
|
||||
ln -s /usr/include/ioctl.h /usr/include/sys/ioctl.h
|
||||
ln -s /usr/src/pgsql/src/backend/port/qnx4/ipc.h /usr/include/sys/ipc.h
|
||||
ln -s /usr/src/pgsql/src/backend/port/qnx4/sem.h /usr/include/sys/sem.h
|
||||
ln -s /usr/src/pgsql/src/backend/port/qnx4/shm.h /usr/include/sys/shm.h
|
||||
|
||||
For ecgs-2.91.60 the file
|
||||
/usr/local/lib/gcc-lib/i386-pc-qnx4/egcs-2.91.66/include/g++/stl_alloc.h
|
||||
had to be patched (extern "C++" { ... } // extern "C++").
|
||||
See attached patch.
|
||||
|
||||
If all prerequisites are available postgres can be built and installed by
|
||||
cd pgsql/src
|
||||
./configure --with-tcl --without-tk --with-perl
|
||||
gmake > make.log 2>&1
|
||||
gmake install > make.install.log 2>&1
|
||||
su
|
||||
cd interfaces/perl5
|
||||
gmake install
|
||||
exit
|
||||
|
||||
All other steps can be carried out as stated in the INSTALL file.
|
||||
|
||||
Make problems:
|
||||
--------------
|
||||
|
||||
Sometimes the Watcom library manager wlib crashes with SIGSEGV on some
|
||||
object files. This is a general problem and not PostgreSQL related.
|
||||
Currently bootstrap.o causes such a crash. The workaround is not to include
|
||||
the object file into the SUBSYS.o but link it directly. For further information
|
||||
see backend/Makefile and backend/bootstrap/Makefile.
|
||||
libpgsql.a currently cannot be generated because of the same problem. But this
|
||||
doesn't matter since shared libraries are not supported.
|
||||
(The Makefiles are already changed to ignore this, you don't have to
|
||||
do anything)
|
||||
|
||||
Regression tests:
|
||||
-----------------
|
||||
please don't use the QNX shell for the parallel regression tests. Download
|
||||
bash from quics.qnx.com and run 'make SHELL=/usr/local/bin/bash check'
|
||||
instead.
|
||||
|
||||
The majority of regression tests succeeded. The following tests failed:
|
||||
|
||||
geometry:
|
||||
Some slight deviation in the last digit and "0" instead of "-0".
|
||||
Can be ignored.
|
||||
|
||||
timestamp, tinterval, abstime, horology:
|
||||
Differences for years before the UNIX epoch. The QNX library probably treats
|
||||
time_t as unsigned -> dates before 1970 get moved into the far future.
|
||||
Can be ignored.
|
||||
|
||||
create_function_1, create_function_2, create_type, create_operator,
|
||||
create_view, select_views, triggers, misc, plpgsql:
|
||||
Error messages due to the lack of shared library support.
|
||||
|
||||
rules, select_views:
|
||||
looks like it fails because it depends on tables created by previously
|
||||
failing tests.
|
||||
|
||||
alter_table:
|
||||
An expected failure message contains one blank more than expected.
|
||||
Possibly a faulty output file.
|
||||
|
||||
int8, subselect, union
|
||||
fails for Watcom version because of lacking int8 support.
|
||||
|
||||
The current state of this port should be sufficient for lot of applications.
|
||||
|
||||
|
||||
Have fun!
|
||||
|
||||
Andreas Kardos
|
||||
2000-04-04
|
||||
|
||||
Bernd Tegge
|
||||
tegge@repas-aeg.de
|
||||
2001-12-10
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
*** ./stl_alloc.h.orig Sat Feb 28 05:17:28 1998
|
||||
--- ./stl_alloc.h Tue Nov 23 04:14:09 1999
|
||||
***************
|
||||
*** 120,125 ****
|
||||
--- 120,126 ----
|
||||
#pragma set woff 1174
|
||||
#endif
|
||||
|
||||
+ extern "C++" {
|
||||
// Malloc-based allocator. Typically slower than default alloc below.
|
||||
// Typically thread-safe and more storage efficient.
|
||||
#ifdef __STL_STATIC_TEMPLATE_MEMBER_BUG
|
||||
***************
|
||||
*** 682,687 ****
|
||||
--- 683,689 ----
|
||||
# endif
|
||||
|
||||
#endif /* ! __USE_MALLOC */
|
||||
+ } // extern "C++"
|
||||
|
||||
#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
|
||||
#pragma reset woff 1174
|
||||
|
||||
|
||||
Patch required to build with gcc:
|
||||
|
||||
*** /usr/src/postgresql-7.2b3/src/backend/port/qnx4/sem.h Thu Nov 8 21:37:52 2001
|
||||
--- src/backend/port/qnx4/sem.h Mon Dec 10 13:22:18 2001
|
||||
***************
|
||||
*** 55,60 ****
|
||||
--- 55,71 ----
|
||||
ushort_t sem_num; /* semaphore # */
|
||||
short sem_op; /* semaphore operation */
|
||||
short sem_flg; /* operation flags */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
+ * command union for semctl.
|
||||
+ */
|
||||
+
|
||||
+ union semun {
|
||||
+ int val; /* value for SETVAL */
|
||||
+ struct semid_ds *buf; /* buffer for IPC_STAT, IPC_SET */
|
||||
+ unsigned short int *array; /* array for GETALL, SETALL */
|
||||
+ struct seminfo *__buf; /* buffer for IPC_INFO */
|
||||
};
|
||||
|
||||
extern int semctl(int semid, int semnum, int cmd, /* ... */ union semun arg);
|
@ -1,4 +1,4 @@
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.250 2005/12/04 03:52:29 momjian Exp $ -->
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.251 2006/01/05 01:56:28 momjian Exp $ -->
|
||||
|
||||
<chapter id="installation">
|
||||
<title><![%standalone-include[<productname>PostgreSQL</>]]>
|
||||
@ -2037,22 +2037,6 @@ kill `cat /usr/local/pgsql/data/postmaster.pid`
|
||||
<entry>Tom I. Helbekkmo (<email>tih@kpnQwest.no</email>), 2001-03-30</entry>
|
||||
<entry>1.5</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><systemitem class="osname">QNX 4 RTOS</></entry>
|
||||
<entry><systemitem>x86</></entry>
|
||||
<entry>7.2</entry>
|
||||
<entry>Bernd Tegge (<email>tegge@repas-aeg.de</email>), 2001-12-10
|
||||
</entry>
|
||||
<entry>needs updates to semaphore code;
|
||||
see also <filename>doc/FAQ_QNX4</filename></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><systemitem class="osname">QNX RTOS v6</></entry>
|
||||
<entry><systemitem>x86</></entry>
|
||||
<entry>7.2</entry>
|
||||
<entry>Igor Kovalenko (<email>Igor.Kovalenko@motorola.com</email>), 2001-11-20</entry>
|
||||
<entry>patches available in archives, but too late for 7.2</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><systemitem class="osname">SCO OpenServer</></entry>
|
||||
<entry><systemitem>x86</></entry>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.359 2005/12/23 23:28:35 tgl Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.360 2006/01/05 01:56:28 momjian Exp $
|
||||
-->
|
||||
|
||||
<chapter Id="runtime">
|
||||
@ -480,10 +480,9 @@ psql: could not connect to server: No such file or directory
|
||||
relevant for <productname>PostgreSQL</>). Almost all modern
|
||||
operating systems provide these features, but not all of them have
|
||||
them turned on or sufficiently sized by default, especially systems
|
||||
with BSD heritage. (For the <systemitem class="osname">Windows</>,
|
||||
<systemitem class="osname">QNX</> and <systemitem class="osname">BeOS</>
|
||||
ports, <productname>PostgreSQL</> provides its own replacement
|
||||
implementation of these facilities.)
|
||||
with BSD heritage. (For the <systemitem class="osname">Windows</> and
|
||||
<systemitem class="osname">BeOS</> ports, <productname>PostgreSQL</>
|
||||
provides its own replacement implementation of these facilities.)
|
||||
</para>
|
||||
|
||||
<para>
|
||||
|
Reference in New Issue
Block a user