[Python-checkins] python/dist/src setup.py,1.86,1.87

jlt63@sourceforge.net jlt63@sourceforge.net
Wed, 22 May 2002 09:46:17 -0700


Update of /cvsroot/python/python/dist/src
In directory usw-pr-cvs1:/tmp/cvs-serv24609

Modified Files:
	setup.py 
Log Message:
Patch #491107: Cygwin setup.py import workaround patch

mwh wrote:
> Jason, feel free to complain if you think this isn't
> the right thing to do.

I guess that I would like to complain and reopen this
issue. :,)  I cannot build a Python 2.2.1 with threads
under Cygwin without this patch even though I'm using
Michael's static _socket workaround.  This is due to the
Cygwin fork() problem with DLL base address conflicts
that are triggered by importing many modules during the
setup.py run.  Similar problems can also be caused by
regrtest.py.

Even after my rebase patch is accepted into Cygwin's
setup.exe, I feel this patch will still be necessary.
This is because during the build process, the shared
extensions (i.e., DLLs) will not be rebased yet.  Hence,
the potential for DLL base address conflicts will exist.

One way to obviate this patch is to push the rebase
functionality into Cygwin's ld.  Unfortunately, I don't
think this is likely to happen.  Another possible way,
is to use the yet to be defined and implemented unload
module functionality:

    http://mail.python.org/pipermail/python-dev/2001-December/019028.html


Index: setup.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/setup.py,v
retrieving revision 1.86
retrieving revision 1.87
diff -C2 -d -r1.86 -r1.87
*** setup.py	4 Apr 2002 17:52:49 -0000	1.86
--- setup.py	22 May 2002 16:46:15 -0000	1.87
***************
*** 169,172 ****
--- 169,178 ----
                  ext.name)
              return
+         # Workaround for Cygwin: Cygwin currently has fork issues when many
+         # modules have been imported
+         if self.get_platform() == 'cygwin':
+             self.announce('WARNING: skipping import check for Cygwin-based "%s"'
+                 % ext.name)
+             return
          ext_filename = os.path.join(
              self.build_lib,