Second, here is the latest, ugly ugly diff from my working version.

I would not just blindly apply this.  It needs to be taken apart.   I did a lot of bad things in it.  It needs to be revisited.  But it does work and did provide me functioning pythonnet binaries and config files that work correctly.  It imports into the system python2.7 as well as into Maya's embedded Python and Nuke's embedded Python.  All on OSX.

Some highlights…

There were earlier commits of changes made by a user, "VIKAS DHIMAN"  And those changes seemed to hard-code the system to ubuntu/debian locations and names.  And a lot of what I had to do was revert those changes.  However, I have been heavy handed in this diff in some places.  Which is why I wouldn't want it committed back without re-working it.  It should be neutral, rather than for one platform or the other.

I added dllmap entries into the .config file for OSX. I also added an "__internal" which is what mono will need for embedded python.  This allows it to run in maya and nuke on OSX in many cases.

VIkas' file assumed the location of the pkg-config directory.  I removed that assumption.  So you need to set the PKG_CONFIG_PATH yourself before building.  That is what allows you to pick which mono it builds against.  Which is kind of important.  And that's what a configure script is for.  but since there isn't one, you do it yourself.  On a proper linux package managed system, it's already set.   There should be no need to hard-code it in the default case.

I changed the monoclr makefile to accept the existing python executable rather than override it.

I changed it to use gcc to compile rather than g++.  I recall that being an Xcode thing.

I updated it to use the more modern names of pkg-config packages for mono  and glib.  I made sure it used the glib flags too.  iirc, glib's pkg-config is in the mac-ports dist location per my port file.  so in my case, that's /opt/local/lib/pkgconfig/ .

I have a bug fix in there that deals with "Reflection Only" assemblies being scanned for types when they should not be.

I removed a file that needs to not be there, in order for some of the build logic to function.

I added some code to make it skip scanning of generics that have no namespace.  this is a hack and probably needs further review.

And there's  ton of cruft in there where monodevelop was updating .csproj files and such.