Open portability issues

Started by Andreas Zeugswetterover 27 years ago10 messages
#1Andreas Zeugswetter
andreas.zeugswetter@telecom.at

Open portability issues:

/usr/local should be searched for lib and include for all ports if present
(currently not working, I have libreadline there)

the stream functions on AIX need a size_t for addrlen's in fe-connect.c and pqcomm.c.

lock.c still has an incompatible TPRINTF(flags, args...) definition

the long long int printf format in int8.h is %lld on AIX

AIX 4.2.1 and 4.3.1 need one other simpler Makefile, another template
and must not include dynloader.c

Andreas

PS: all unsigned char problems are gone.
keep it cidr not inet !!
and no, the heaptuple.c fix did not fix the pg_class index problem
sorry i am off to weekend now

begin 600 aix_42
M05)/4%0Z8W)S"D-&3$%'4SHM<6-H87)S/7-I9VYE9" M<6UA>&UE;3TX,3DR
M("UQ:&%L=#UW("UQ<W)C;7-G("UQ8VAE8VL]9&EV>F5R;R M<6QO;F=L;VYG
M"E-(05)%1%],24(Z"D%,3#H*4U)#2%])3D,Z"E-20TA?3$E".@I54T5?3$]#
K04Q%.FYO"D1,4U5&1DE8.BYS;PI91DQ!1U,Z+60*64%#0SH*0T,Z>&QC"D]#
`
end

begin 600 Makefile.aix4
M34M?3D]?3$]21$52/2!T<G5E"@HE)"A$3%-51D9)6"DZ("4N;PH))"A,1"D@
J+4<@+6)E>'!A;&P@+6)N;V5N=')Y("UO("1 ("0\("0H3$1&3$%'4RD*
`
end

begin 600 .similar
M86QP:&$M9&5C+6]S9CUA;'!H80IA;'!H82UU;FMN;W=N+6QI;G5X+6=N=3UL
M:6YU>%]A;'!H80IH<'!A,2XQ+6AP+6AP=7@Q,"XR,#UH<'5X7V-C"FAP<&$Q
M+C$M<W1R871U<RUS>7-V-#US=G(T"FDS.#8M;F5X="UN97AT<W1E<#,];F5X
M='-T97 *:3,X-BUP8RUB<V1I,BXP/6)S9&E?,BXP"FDS.#8M<&,M8G-D:3(N
M,3UB<V1I7S(N,0II,S@V+7!C+6)S9&DS+C ]8G-D:5\S+C *:3,X-BUP8RUL
M:6YU>"UG;G4];&EN=7A?:3,X-@II,S@V+7!C+7-O;&%R:7,R+C8]<V]L87)I
M<U]I,S@V7V=C8PII,S@V+7!C+7-U;F]S-3US;VQA<FES7VDS.#9?9V-C"FDS
M.#8M=6YK;F]W;BUF<F5E8G-D/69R965B<V0*:3,X-BUU;FMN;W=N+6YE=&)S
M9#UN971B<V0*:30X-BUP8RUL:6YU>"UG;G4];&EN=7A?:3,X-@II-3@V+7!C
M+6QI;G5X+6=N=3UL:6YU>%]I,S@V"FDU.#8M<&,M<V-O,RXR=CUS8V\*:38X
M-BUP8RUL:6YU>"UG;G4];&EN=7A?:3,X-@IM:7!S+7-G:2UI<FEX/6ER:7@U
M"G!O=V5R<&,M:6)M+6%I>#,N,BXU/6%I>%\S,C4*<&]W97)P8RUI8FTM86EX
M-"XQ+C0N,#UA:7A?-#$*<&]W97)P8RUI8FTM86EX-"XQ+C4N,#UA:7A?-#$*
M<&]W97)P8RUI8FTM86EX-"XR+C$N,#UA:7A?-#(*<&]W97)P8RUI8FTM86EX
M-"XS+C$N,#UA:7A?-#(*<&]W97)P8RUU;FMN;W=N+6QI;G5X+6=N=3UL:6YU
M>%]P<&,*<W!A<F,M<W5N+7-O;&%R:7,]<V]L87)I<U]S<&%R8U]G8V,*<W!A
M<F,M<W5N+7-U;F]S-#US=6YO<S1?9V-C"G-P87)C+7-U;BUS=6YO<S4]<V]L
M87)I<U]S<&%R8U]G8V,*<W!A<F,M=6YK;F]W;BUL:6YU>"UG;G4];&EN=7A?
&<W!A<F,*
`
end

#2Brook Milligan
brook@trillium.NMSU.Edu
In reply to: Andreas Zeugswetter (#1)
Re: [HACKERS] Open portability issues

Open portability issues:

/usr/local should be searched for lib and include for all ports if present
(currently not working, I have libreadline there)

See the INSTALL file for using configure.

--with-includes=DIRS
Include DIRS in list of directories searched
for header files. (Typical use will need
--with-includes=/usr/local/include)

--with-libs=DIRS
--with-libraries=DIRS
Include DIRS in list of directories searched
for archive libraries. (Typical use will need
--with-libraries=/usr/local/lib)

Cheers,
Brook

#3Thomas G. Lockhart
lockhart@alumni.caltech.edu
In reply to: Andreas Zeugswetter (#1)
Re: [HACKERS] Open portability issues

the long long int printf format in int8.h is %lld on AIX

This is on my list. %lld will work with gcc also, so since we don't have
very many reported successful ports for int8, we should just change it
for now.

- Tom

#4Massimo Dal Zotto
dz@cs.unitn.it
In reply to: Andreas Zeugswetter (#1)
Re: [HACKERS] Open portability issues

Open portability issues:

/usr/local should be searched for lib and include for all ports if present
(currently not working, I have libreadline there)

the stream functions on AIX need a size_t for addrlen's in fe-connect.c and pqcomm.c.

lock.c still has an incompatible TPRINTF(flags, args...) definition

Please apply this patch:

*** src/backend/storage/lmgr/lock.c.orig	Wed Aug 26 09:00:55 1998
--- src/backend/storage/lmgr/lock.c	Mon Sep  7 14:44:53 1998
*************** static int WaitOnLock(LOCKMETHOD lockmet
*** 136,153 ****
  		 xidentP->holders[5], \
  		 xidentP->nHolding)

- #define LOCK_TPRINTF(lock, args...) \
- if (((LOCKDEBUG(LOCK_LOCKMETHOD(*(lock))) >= 1) \
- && (lock->tag.relId >= lockDebugOidMin)) \
- || (lock->tag.relId == lockDebugRelation)) \
- TPRINTF(TRACE_ALL, args)
-
#else /* !LOCK_MGR_DEBUG */
#define LOCK_PRINT(where,lock,type)
#define LOCK_PRINT_AUX(where,lock,type)
#define XID_PRINT(where,xidentP)
#define XID_PRINT_AUX(where,xidentP)
- #define LOCK_TPRINTF(lock, args...)
#endif /* !LOCK_MGR_DEBUG */

  static char *lock_types[] = {
--- 136,146 ----
*************** LockRelease(LOCKMETHOD lockmethod, LOCKT
*** 1200,1206 ****
  	}
  	else
  	{
! 		LOCK_TPRINTF(lock, "LockRelease: no wakeup needed");
  	}
  	SpinRelease(masterLock);
--- 1193,1202 ----
  	}
  	else
  	{
! 		if (((LOCKDEBUG(LOCK_LOCKMETHOD(*(lock))) >= 1) \
! 			 && (lock->tag.relId >= lockDebugOidMin)) \
! 			|| (lock->tag.relId == lockDebugRelation))
! 			TPRINTF(TRACE_ALL, "LockRelease: no wakeup needed");
  	}

SpinRelease(masterLock);

--
Massimo Dal Zotto

+----------------------------------------------------------------------+
|  Massimo Dal Zotto                email:  dz@cs.unitn.it             |
|  Via Marconi, 141                 phone:  ++39-461-534251            |
|  38057 Pergine Valsugana (TN)     www:  http://www.cs.unitn.it/~dz/  |
|  Italy                            pgp:  finger dz@tango.cs.unitn.it  |
+----------------------------------------------------------------------+
#5Bruce Momjian
maillist@candle.pha.pa.us
In reply to: Massimo Dal Zotto (#4)
Re: [HACKERS] Open portability issues

Patch applied.

[Charset iso-8859-1 unsupported, filtering to ASCII...]

Open portability issues:

/usr/local should be searched for lib and include for all ports if present
(currently not working, I have libreadline there)

the stream functions on AIX need a size_t for addrlen's in fe-connect.c and pqcomm.c.

lock.c still has an incompatible TPRINTF(flags, args...) definition

Please apply this patch:

*** src/backend/storage/lmgr/lock.c.orig	Wed Aug 26 09:00:55 1998
--- src/backend/storage/lmgr/lock.c	Mon Sep  7 14:44:53 1998
*************** static int WaitOnLock(LOCKMETHOD lockmet
*** 136,153 ****
xidentP->holders[5], \
xidentP->nHolding)

- #define LOCK_TPRINTF(lock, args...) \
- if (((LOCKDEBUG(LOCK_LOCKMETHOD(*(lock))) >= 1) \
- && (lock->tag.relId >= lockDebugOidMin)) \
- || (lock->tag.relId == lockDebugRelation)) \
- TPRINTF(TRACE_ALL, args)
-
#else /* !LOCK_MGR_DEBUG */
#define LOCK_PRINT(where,lock,type)
#define LOCK_PRINT_AUX(where,lock,type)
#define XID_PRINT(where,xidentP)
#define XID_PRINT_AUX(where,xidentP)
- #define LOCK_TPRINTF(lock, args...)
#endif /* !LOCK_MGR_DEBUG */

static char *lock_types[] = {
--- 136,146 ----
*************** LockRelease(LOCKMETHOD lockmethod, LOCKT
*** 1200,1206 ****
}
else
{
! 		LOCK_TPRINTF(lock, "LockRelease: no wakeup needed");
}
SpinRelease(masterLock);
--- 1193,1202 ----
}
else
{
! 		if (((LOCKDEBUG(LOCK_LOCKMETHOD(*(lock))) >= 1) \
! 			 && (lock->tag.relId >= lockDebugOidMin)) \
! 			|| (lock->tag.relId == lockDebugRelation))
! 			TPRINTF(TRACE_ALL, "LockRelease: no wakeup needed");
}

SpinRelease(masterLock);

--
Massimo Dal Zotto

+----------------------------------------------------------------------+
|  Massimo Dal Zotto                email:  dz@cs.unitn.it             |
|  Via Marconi, 141                 phone:  ++39-461-534251            |
|  38057 Pergine Valsugana (TN)     www:  http://www.cs.unitn.it/~dz/  |
|  Italy                            pgp:  finger dz@tango.cs.unitn.it  |
+----------------------------------------------------------------------+
-- 
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)
#6Bruce Momjian
maillist@candle.pha.pa.us
In reply to: Andreas Zeugswetter (#1)
Re: Open portability issues

Open portability issues:

/usr/local should be searched for lib and include for all ports if present
(currently not working, I have libreadline there)

I actually us a flag to configure:

--with-includes="/u/readline" \
--with-libraries="/u/readline /usr/contrib/lib"

Should we be poking around in /usr/local by default? Comments?

the stream functions on AIX need a size_t for addrlen's in fe-connect.c and pqcomm.c.

This has come up before. AIX wants size_t for certain structures like
getsockname(). I believe the third parameter on AIX is size_t, while it
used to be int on my machine, but is not socklen_t. Is this correct?
The 'int' code works fine for me, but I can see why AIX is having a
problem, and perhaps it is time for configure to check on the various
types.

getsockname(int s, struct sockaddr *name, socklen_t *namelen);

Can you confirm this?

lock.c still has an incompatible TPRINTF(flags, args...) definition

Massimo has fixed this.

the long long int printf format in int8.h is %lld on AIX

AIX 4.2.1 and 4.3.1 need one other simpler Makefile, another template
and must not include dynloader.c

Done. Files added.

PS: all unsigned char problems are gone.
keep it cidr not inet !!
and no, the heaptuple.c fix did not fix the pg_class index problem
sorry i am off to weekend now

begin 600 aix_42
M05)/4%0Z8W)S"D-&3$%'4SHM<6-H87)S/7-I9VYE9" M<6UA>&UE;3TX,3DR
M("UQ:&%L=#UW("UQ<W)C;7-G("UQ8VAE8VL]9&EV>F5R;R M<6QO;F=L;VYG
M"E-(05)%1%],24(Z"D%,3#H*4U)#2%])3D,Z"E-20TA?3$E".@I54T5?3$]#
K04Q%.FYO"D1,4U5&1DE8.BYS;PI91DQ!1U,Z+60*64%#0SH*0T,Z>&QC"D]#
`
end

begin 600 Makefile.aix4
M34M?3D]?3$]21$52/2!T<G5E"@HE)"A$3%-51D9)6"DZ("4N;PH))"A,1"D@
J+4<@+6)E>'!A;&P@+6)N;V5N=')Y("UO("1 ("0\("0H3$1&3$%'4RD*
`
end

begin 600 .similar
M86QP:&$M9&5C+6]S9CUA;'!H80IA;'!H82UU;FMN;W=N+6QI;G5X+6=N=3UL
M:6YU>%]A;'!H80IH<'!A,2XQ+6AP+6AP=7@Q,"XR,#UH<'5X7V-C"FAP<&$Q
M+C$M<W1R871U<RUS>7-V-#US=G(T"FDS.#8M;F5X="UN97AT<W1E<#,];F5X
M='-T97 *:3,X-BUP8RUB<V1I,BXP/6)S9&E?,BXP"FDS.#8M<&,M8G-D:3(N
M,3UB<V1I7S(N,0II,S@V+7!C+6)S9&DS+C ]8G-D:5\S+C *:3,X-BUP8RUL
M:6YU>"UG;G4];&EN=7A?:3,X-@II,S@V+7!C+7-O;&%R:7,R+C8]<V]L87)I
M<U]I,S@V7V=C8PII,S@V+7!C+7-U;F]S-3US;VQA<FES7VDS.#9?9V-C"FDS
M.#8M=6YK;F]W;BUF<F5E8G-D/69R965B<V0*:3,X-BUU;FMN;W=N+6YE=&)S
M9#UN971B<V0*:30X-BUP8RUL:6YU>"UG;G4];&EN=7A?:3,X-@II-3@V+7!C
M+6QI;G5X+6=N=3UL:6YU>%]I,S@V"FDU.#8M<&,M<V-O,RXR=CUS8V\*:38X
M-BUP8RUL:6YU>"UG;G4];&EN=7A?:3,X-@IM:7!S+7-G:2UI<FEX/6ER:7@U
M"G!O=V5R<&,M:6)M+6%I>#,N,BXU/6%I>%\S,C4*<&]W97)P8RUI8FTM86EX
M-"XQ+C0N,#UA:7A?-#$*<&]W97)P8RUI8FTM86EX-"XQ+C4N,#UA:7A?-#$*
M<&]W97)P8RUI8FTM86EX-"XR+C$N,#UA:7A?-#(*<&]W97)P8RUI8FTM86EX
M-"XS+C$N,#UA:7A?-#(*<&]W97)P8RUU;FMN;W=N+6QI;G5X+6=N=3UL:6YU
M>%]P<&,*<W!A<F,M<W5N+7-O;&%R:7,]<V]L87)I<U]S<&%R8U]G8V,*<W!A
M<F,M<W5N+7-U;F]S-#US=6YO<S1?9V-C"G-P87)C+7-U;BUS=6YO<S4]<V]L
M87)I<U]S<&%R8U]G8V,*<W!A<F,M=6YK;F]W;BUL:6YU>"UG;G4];&EN=7A?
&<W!A<F,*
`
end

-- 
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)
#7Brook Milligan
brook@trillium.NMSU.Edu
In reply to: Bruce Momjian (#6)
Re: [HACKERS] Re: Open portability issues

Open portability issues:

/usr/local should be searched for lib and include for all ports if present
(currently not working, I have libreadline there)

I actually us a flag to configure:

--with-includes="/u/readline" \
--with-libraries="/u/readline /usr/contrib/lib"

Should we be poking around in /usr/local by default? Comments?

No! The configure options (including the /usr/local typical usage)
are clearly outlined in INSTALL and easy to use. In fact, arbitrary
series of space-separated directories can be given as you illustrate.

The configuration stuff works fine now. Why mung it up again? If we
make searching /usr/local a default, we need a way to prevent that if
the wrong stuff is in /usr/local. It makes sense to simply specify
where to look, document what to do, and be done.

Cheers,
Brook

#8The Hermit Hacker
scrappy@hub.org
In reply to: Bruce Momjian (#6)
Re: [HACKERS] Re: Open portability issues

On Wed, 9 Sep 1998, Bruce Momjian wrote:

Open portability issues:

/usr/local should be searched for lib and include for all ports if present
(currently not working, I have libreadline there)

I actually us a flag to configure:

--with-includes="/u/readline" \
--with-libraries="/u/readline /usr/contrib/lib"

Should we be poking around in /usr/local by default? Comments?

No...unless someone can point me at a package that explicitly goes
out and looking /usr/local. I've yet to have a problem with any package
I've installed not being able to find libraries and include files that are
installed in /usr/local ... if someone is having a problem, they should be
directed to look at *fixing* their system in the first place, as they are
definitely going to have more problems then just with PostgreSQL...

Marc G. Fournier
Systems Administrator @ hub.org
primary: scrappy@hub.org secondary: scrappy@{freebsd|postgresql}.org

#9Andreas Zeugswetter
andreas.zeugswetter@telecom.at
In reply to: The Hermit Hacker (#8)
Re: Open portability issues

Should we be poking around in /usr/local by default? Comments?

I would, since it is pretty much a standard place to put gnu, bsd and other extensions
like perl, bison, readline ... on non BSD or Linux systems.

the stream functions on AIX need a size_t for addrlen's in fe-connect.c and pqcomm.c.

This has come up before. AIX wants size_t for certain structures like
getsockname(). I believe the third parameter on AIX is size_t, while it
used to be int on my machine, but is not socklen_t. Is this correct?
The 'int' code works fine for me, but I can see why AIX is having a
problem, and perhaps it is time for configure to check on the various
types.

getsockname(int s, struct sockaddr *name, socklen_t *namelen);

Ok, so this gets tricky. In 4.2.1 it is size_t and in 4.3.1 it is as above with socklen_t :-(

AIX 4.2.1 and 4.3.1 need one other simpler Makefile, another template
and must not include dynloader.c

Done. Files added.

Thanks very much :-)

Andreas

#10Andreas Zeugswetter
andreas.zeugswetter@telecom.at
In reply to: Andreas Zeugswetter (#9)
Re: [HACKERS] Re: Open portability issues

Should we be poking around in /usr/local by default? Comments?

No...unless someone can point me at a package that explicitly goes
out and looking /usr/local. I've yet to have a problem with any package
I've installed not being able to find libraries and include files that are
installed in /usr/local ... if someone is having a problem, they should be
directed to look at *fixing* their system in the first place, as they are
definitely going to have more problems then just with PostgreSQL...

Ok, just something to grumble on.
1. It did find /usr/local headers with a snapshot from about a month ago but not libs
2. a lot of the templates have SRCH_INC:/usr/local/include SRCH_LIB:/usr/local/lib
why that if it is supposed to be in the compiler config ?

Even if I add those lines to the AIX template, configure won't find my
/usr/local/include/readline/readline.h. (the --with-libs works fine :-)

I think SRCH_INC:/usr/local/include SRCH_LIB:/usr/local/lib must be taken out of template/aix_42
since it is not a standard AIX path, and therefore won't be available on every system (I thought I deleted
those before sending in the file, Sorry)

I don't know how to do the Makefile and dynloader stuff, since $os will be aix
the Makefile.aix and aix.c dynloader will be used which is wrong.
Maybe the dynloader step could be done conditionally only if -ldl is not found by configure ?

Andreas