this patch and tar archive will add support for the darwin/osxpb to the current cvs tree.

a couple things to note:

- unpack the tar archive in pgsql/

- the config.guess and config.sub files have been updated by apple to support their new os. i don't think these changes have been folded back in to the main archive yet (at least they aren't in the pgsql cvs yet). these need to be copied over from /usr/libexec/config.* in order to obtain the correct os (e.g. powerpc-apple-darwin1.2 on PB).

- the diff only patches configure.in so autoconf needs to be rerun

- the situation with darwin's implementation of sysv semaphores is in progress at the moment (the shm/ipc support *is* there and seems to work fine). so this patch uses HAVE_SYS_SEM_H to conditionally build the src/backend/port/darwin semaphore code (borrowed from qnx4). I've followed the BeOS example of including the necessary sem.h declarations in src/include/port/darwin.h. this is rather messy at the moment and can be dumped once apple releases a version of PB with sysv sem built into the kernel.

- i'm a bit confused over the __powerpc__ tas function in s_lock.c (there i assume for the ppc-linux port). it doesn't compile at all on darwin so i just added a version that does work on darwin under DARWIN_OS. it's potentially a bit confusing and s_lock.c should probably be changed to include a better conditional.

bruce
Sun, 22 Oct 2000 19:51:06 -0400
Bruce Hartzler <bruceh@mail.utexas.edu>
add darwin/osxpb support to cvs
Do you actually *need* -O0 on darwin with current sources?
Or is that a leftover from 7.0.* ?  AFAIK -O2 should work on PPC.

			regards, tom lane

Mon, 23 Oct 2000 12:43:53 -0400
Tom Lane <tgl@sss.pgh.pa.us>
Re: add darwin/osxpb support to cvs 
I'll take this and integrate it.  Please, nobody commit this right now,
I'm messing with things...

Bruce Hartzler writes:

> this patch and tar archive will add support for the darwin/osxpb to the current cvs tree.
> 
> a couple things to note:
> 
> - unpack the tar archive in pgsql/
> 
> - the config.guess and config.sub files have been updated by apple to support their new os. i don't think these changes have been folded back in to the main archive yet (at least they aren't in the pgsql cvs yet). these need to be copied over from /usr/libexec/config.* in order to obtain the correct os (e.g. powerpc-apple-darwin1.2 on PB).
> 
> - the diff only patches configure.in so autoconf needs to be rerun
> 
> - the situation with darwin's implementation of sysv semaphores is in progress at the moment (the shm/ipc support *is* there and seems to work fine). so this patch uses HAVE_SYS_SEM_H to conditionally build the src/backend/port/darwin semaphore code (borrowed from qnx4). I've followed the BeOS example of including the necessary sem.h declarations in src/include/port/darwin.h. this is rather messy at the moment and can be dumped once apple releases a version of PB with sysv sem built into the kernel.
> 
> - i'm a bit confused over the __powerpc__ tas function in s_lock.c (there i assume for the ppc-linux port). it doesn't compile at all on darwin so i just added a version that does work on darwin under DARWIN_OS. it's potentially a bit confusing and s_lock.c should probably be changed to include a better conditional.
> 
> bruce
> 
> 
> 

-- 
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/


Mon, 23 Oct 2000 19:29:45 +0200 (CEST)
Peter Eisentraut <peter_e@gmx.net>
Re: add darwin/osxpb support to cvs
Bruce Hartzler writes:

> this patch and tar archive will add support for the darwin/osxpb to the current cvs tree.

Next time you can make your patch with "diff -crN" so that you don't have
to create a separate tarball.

> - the config.guess and config.sub files have been updated by apple to
> support their new os. i don't think these changes have been folded
> back in to the main archive yet

I installed the latest ones from GNU which claim to support it according
to the ChangeLog.

> - the situation with darwin's implementation of sysv semaphores is in
> progress at the moment (the shm/ipc support *is* there and seems to
> work fine). so this patch uses HAVE_SYS_SEM_H to conditionally build

HAVE_SYS_SEM_H is a preprocessor symbol, not a makefile variable.

> the src/backend/port/darwin semaphore code (borrowed from qnx4).

If you could arrange it, could you use the same files as QNX, perhaps with
an #ifdef here or there

> I've followed the BeOS example of including the necessary sem.h
> declarations in src/include/port/darwin.h. this is rather messy at the
> moment and can be dumped once apple releases a version of PB with sysv
> sem built into the kernel.

The include/port/beos.h isn't really a shining example of how to do this.  
This file is include *everywhere*, but we don't want to know about
semaphores everywhere.  I'd prefer it if you use the QNX approach and
symlink sem.h into an include directory (e.g., /usr/local/include/sys),
since it's only temporary anyway.

Also, overriding configure results (ï¿½ la #undef HAVE_UNION_SEMUN) isn't
cool.

I'm also somewhat concerned about the dynloader.c because it's under the
Apache license which has a funny advertisement clause.  Comments from
someone?

> - i'm a bit confused over the __powerpc__ tas function in s_lock.c
> (there i assume for the ppc-linux port). it doesn't compile at all on
> darwin so i just added a version that does work on darwin under
> DARWIN_OS. it's potentially a bit confusing and s_lock.c should
> probably be changed to include a better conditional.

The compiler probably predefines something like __darwin__, which you
should use.  You can find out with 

touch foo.h
cc -E -dM foo.h
rm foo.h

And finally, what's up with this:

CFLAGS='-O0 -g -traditional-cpp'

?  What's wrong with the "modern-cpp"?

-- 
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/


Tue, 24 Oct 2000 20:44:22 +0200 (CEST)
Peter Eisentraut <peter_e@gmx.net>
Re: [PATCHES] add darwin/osxpb support to cvs
>Next time you can make your patch with "diff -crN" so that you don't have
>to create a separate tarball.

No problem. I tried just doing a diff with cvs but wasn't able to get 
the -N option to work. This is the first time I've ever tried 
patching unix software so I'm sorry if it's a bit messy. Thanks for 
you help in getting it right.


>  > - the config.guess and config.sub files have been updated by apple to
>>  support their new os. i don't think these changes have been folded
>>  back in to the main archive yet
>
>I installed the latest ones from GNU which claim to support it according
>to the ChangeLog.

I'll try checking out the new versions and see if they work. I can 
send you a diff with the ones I have here if you want to see the 
additions Apple made.


>  > I've followed the BeOS example of including the necessary sem.h
>>  declarations in src/include/port/darwin.h. this is rather messy at the
>>  moment and can be dumped once apple releases a version of PB with sysv
>>  sem built into the kernel.
>
>The include/port/beos.h isn't really a shining example of how to do this.ï¿½
>This file is include *everywhere*, but we don't want to know about
>semaphores everywhere.  I'd prefer it if you use the QNX approach and
>symlink sem.h into an include directory (e.g., /usr/local/include/sys),
>since it's only temporary anyway.

I agree it's rather messy. I originally had just used the sym link in 
/usr/local/include, but as I said, some of the newer Darwin kernels 
have the sysv sem.h file already there and I was worried about people 
overwriting it. If you think it's fair to put this responsibility on 
the end user, I'm ok with that. I just thought it might be nice to 
check and see if the semaphore implementation was already there, and 
if not, build the necessary parts. I'll switch it back to the way it 
was.

>I'm also somewhat concerned about the dynloader.c because it's under the
>Apache license which has a funny advertisement clause.  Comments from
>someone?

I wondering about this too. I'll try emailing Wilfredo Sanchez and 
see if I can get the code outside the Apache license. This would 
probably be easiest.


>The compiler probably predefines something like __darwin__, which you
>should use.  You can find out with

It doesn't actually provide __darwin__ but as I mentioned in a 
previous post, Apple is suggesting people use __APPLE__ combined with 
__ppc__ or __i386__ for the different darwin builds. The section in 
s_lock.c should probably be changed to reflect this instead of using 
DARWIN_OS.


>And finally, what's up with this:
>
>CFLAGS='-O0 -g -traditional-cpp'
>
>?  What's wrong with the "modern-cpp"?

Apple's "modern-cpp" called cpp-precomp uses some strange parsing 
that breaks on several files in the postgresql build. They are still 
working on it apparently and are suggesting people simply use the 
-traditional-cpp flag when this happens instead of trying to update 
the files.

Thanks again for all your comments and suggestions.

Bruce

Tue, 24 Oct 2000 17:16:41 -0400
Bruce Hartzler <bruceh@mail.utexas.edu>
Re: [PATCHES] add darwin/osxpb support to cvs
[ folks in Cc: were also interested in Darwin/MacOS X support ]

Bruce Hartzler writes:

> this patch and tar archive will add support for the darwin/osxpb to the current cvs tree.

Greetings.

I installed parts of your patch, which should at least get you, or other
interested people going.

Open issues:

* Dynamic loader code that's under a BSD license.  I've just installed
dummy files for now.

* It was reported that the assembler doesn't like the__powerpc__ code in
backend/storage/buffer/s_lock.h.  Your code looks essentially the same, so
it seems to be a syntax discrepancy between the GNU assembler and whatever
your system uses.  Perhaps we could check if the altered code works on
other systems as well before we install duplicates?  (The GNU assembler
ought to be pretty flexible.)

* Semaphore support reportedly does exist in new kernels, so I don't think
we need to add that to the tree.  Maybe a separate patch for older kernels
is in order.

Besides that, try to build all the optional parts (C++, Tcl, ODBC, ...) as
well.

-- 
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/


Tue, 31 Oct 2000 21:15:14 +0100 (CET)
Peter Eisentraut <peter_e@gmx.net>
Re: add darwin/osxpb support to cvs
>Greetings.
>
>I installed parts of your patch, which should at least get you, or other
>interested people going.
>Open issues:
>
>* Dynamic loader code that's under a BSD license.  I've just installed
>dummy files for now.

Thanks Peter,

I heard back from Fred about the dynamic loader code. He gave the ok 
to use it outside the Apache license (see below).

>* It was reported that the assembler doesn't like the__powerpc__ code in
>backend/storage/buffer/s_lock.h.  Your code looks essentially the same, so
>it seems to be a syntax discrepancy between the GNU assembler and whatever
>your system uses.  Perhaps we could check if the altered code works on
>other systems as well before we install duplicates?  (The GNU assembler
>ought to be pretty flexible.)

You are probably right. Apple's gcc-based compiler was split off from 
the main tree a while back when they were adding a bunch of 
NEXT-based objective-c compiling routines to it. I know people have 
been trying to merge the changes back into the main gcc tree (and new 
gcc changes into Apple's) but I don't know how long this process it 
going to go on for. For now though, it won't compile the other PPC 
code already in there.


>* Semaphore support reportedly does exist in new kernels, so I don't think
>we need to add that to the tree.  Maybe a separate patch for older kernels
>is in order.

This sound fine with me. The C++ stuff worked ok with the cvs tree. 
The Tcl stuff is on the way and might be working now (it's on the 
Darwin cvs server). I'll look into ODBC.

Thanks for your help,

Bruce

-------------------------------------------

Delivered-To: bruceh@mail.utexas.edu
Date: Wed, 25 Oct 2000 12:24:07 +0000
Reply-To: wsanchez@apple.com
From: Wilfredo Sanchez <wsanchez@apple.com>
To: Bruce Hartzler <bruceh@mail.utexas.edu>
Mime-Version: 1.0 (Apple Message framework v337)
Subject: Re: dynloader code in Apache
Status: R

>  I was wondering if you had released your dynloader code under anyï¿½
>  other licenses besides Apache's? I've brought it over in order to getï¿½
>  Postgresql running on Darwin but I think the people managing theï¿½
>  Postgresql code are a bit uneasy about using it under Apache'sï¿½
>  advertising license. Anything you might suggest would be most helpful.

   The code is pretty simple to reproduce from just looking at the headers.
You needn't worry about the license.  Pretend I sent it to you as a patch.

	-Fred

Wilfredo Sï¿½nchez, wsanchez@apple.com
Open Source Engineering Lead
Apple Computer, Inc., Core Operating System Group
1 Infinite Loop, Cupertino, CA 94086, 408.974-5174


Wed, 1 Nov 2000 04:07:53 +0200
Bruce Hartzler <bruceh@mail.utexas.edu>
Re: add darwin/osxpb support to cvs