Change code in setup.py for parsing LDFLAGS and CPPFLAGS to use optparse
instead of getopt.  Required making use of gettext._ as optional (optparse
changed OK'ed by Greg Ward in private email).
diff --git a/Lib/optparse.py b/Lib/optparse.py
index 4a3d3a8..6d3c94b 100644
--- a/Lib/optparse.py
+++ b/Lib/optparse.py
@@ -69,7 +69,10 @@
 import sys, os
 import types
 import textwrap
-from gettext import gettext as _
+try:
+    from gettext import gettext as _
+except ImportError:
+    _ = lambda arg: arg
 
 def _repr(self):
     return "<%s at 0x%x: %s>" % (self.__class__.__name__, id(self), self)
diff --git a/Misc/NEWS b/Misc/NEWS
index 380bf9a..ffeb29b 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -25,6 +25,8 @@
 Library
 -------
 
+- optparse now optionally imports gettext.  This allows its use in setup.py.
+
 - the deprecated tzparse module was removed.
 
 - the pickle module no longer uses the deprecated bin parameter.
diff --git a/setup.py b/setup.py
index c9f94ab..807cd59 100644
--- a/setup.py
+++ b/setup.py
@@ -3,7 +3,7 @@
 
 __version__ = "$Revision$"
 
-import sys, os, imp, re, getopt
+import sys, os, imp, re, optparse
 
 from distutils import log
 from distutils import sysconfig
@@ -253,11 +253,10 @@
                 ('CPPFLAGS', '-I', self.compiler.include_dirs)):
             env_val = os.getenv(env_var)
             if env_val:
-                # getopt is used instead of optparse because the latter imports
-                # gettext which imports struct which has not been built yet
-                # when this method is needed
-                options = getopt.getopt(env_val.split(), arg_name[1] + ':')[0]
-                for arg_option, directory in options:
+                parser = optparse.OptionParser()
+                parser.add_option(arg_name, dest="dirs", action="append")
+                options = parser.parse_args(env_val.split())[0]
+                for directory in options.dirs:
                     add_dir_to_list(dir_list, directory)
 
         if os.path.normpath(sys.prefix) != '/usr':