From: Michael Widenius Date: October 3 2000 4:29pm Subject: Re: porting to Darwin/Mac OS X List-Archive: http://lists.mysql.com/internals/22 Message-Id: <14810.2423.990739.289867@narttu.mysql.fi> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi! >>>>> "Chris" == Chris Meyer writes: Chris> Hi Monty, >> Wht is the difference between the thread implementation in rhapsody >> and darwin; As you know, MySQL compiles and works on rhapsodi. Chris> Darwin has a POSIX IEEE 1003.1c pthreads implementation. I don't know Chris> enough about the standard to know if Darwin complies 100% but 'POSIX Chris> IEEE 1003.1c' is documented in the headers... Again, I think Chris> pthread_kill is not included in that spec. What defines do I have to Chris> set in order to avoid the use of pthread_kill? I ran configure (after Chris> certain modifications to recognize 'darwin') and it noticed that Chris> pthread_kill was NOT available -- but when I did the 'make' Chris> pthread_kill was still being called. Is this a mistake? For rhapsody we have the following in configure: *rhapsody*) if test "$ac_cv_prog_gcc" = "yes" then CPPFLAGS="$CPPFLAGS -traditional-cpp " CFLAGS="-DHAVE_CTHREADS_WRAPPER -DDO_NOT_REMOVE_THREAD_WRAPPERS" CXXFLAGS="-DHAVE_CTHREADS_WRAPPER" if test $with_named_curses = "no" then with_named_curses="" fi fi Adding the above defines to CFLAGS and CXXFLAGS should give you the same behaveour in Darvin as in rhapsody >> Doesn't mysqladmin shutdown work if you don't have any connected >> clients? I am quite sure this works on rhapsodi. Chris> I never got this to work even in rhapsody -- but I don't think I ever Chris> tried the binary dist. I had built it myself... I have access to one MacOS X machine with rhapsody; I can verify this when I get some time over.. Chris> Here's a list of the issues for building under Darwin. I also Chris> included my current patch file which gets things to build. You'll Chris> note that I'm NOT using the 'HAVE_CTHREADS_WRAPPER' like rhapsody. Why? If you don't do that, you will get problems with pthread_kill ? Chris> Instead I made a new section called 'HAVE_DARWIN_THREADS'. Hopefully Chris> this is just temporary until things get cleaned up. Anyway, the list: Chris> 1 - 'darwin' needs to be added to config.guess and config.sub Chris> 2 - A compiler option '-O6' is added to the build; this doesn't seem Chris> to be a standard gcc switch; only pgcc under linux uses it. This Chris> doesn't cause the build to fail, just a bunch of annoying warnings. I Chris> didn't make any changes w.r.t. this. ok. Chris> 3 - The check for 'ps' doesn't work because under Darwin when the Chris> shell executes a script the only thing that shows up in 'ps' is the Chris> shell, not the script. I posted some messages on the Darwin list to Chris> see if anyone has any solution to this. Otherwise someone more Chris> knowledgeable will have to special-case Darwin in configure to force Chris> the BSD style FIND_PROC. ok. Chris> 4 - Some compiler flags for building with Darwin's gcc. Mainly Chris> '-traditional-cpp' needs to be on to build correctly. ok. Chris> 5 - The whole pthread issue. See my first paragraph at the beginning Chris> of this message. see above. Chris> 6 - A minor change in sql/sql_cache.cc which doesn't build under Chris> Darwin. Hopefully this can be merged into mysql right away. Done. Chris> Here's the patch file (don't apply this blindly since configure.in Chris> forces FIND_PROC to use BSD style if all other checks fail): I have now applied this; I did however add a test to only do do your FIND_PROC patch on darwin. Regards, Monty