spwdmodule.c should only be built when either HAVE_GETSPNAM or HAVE_GETSPENT is
defined.
diff --git a/Misc/NEWS b/Misc/NEWS
index ac8f8ee..88a2fe6 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -152,6 +152,9 @@
 Build
 -----
 
+- spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is
+  defined.  Discovered as a result of not being able to build on OS X.
+
 - setup.py now uses the directories specified in LDFLAGS using the -L option
   and in CPPFLAGS using the -I option for adding library and include
   directories, respectively, for compiling extension modules against.  This has
diff --git a/setup.py b/setup.py
index 360c476..9b41f4c 100644
--- a/setup.py
+++ b/setup.py
@@ -384,12 +384,14 @@
         # fcntl(2) and ioctl(2)
         exts.append( Extension('fcntl', ['fcntlmodule.c']) )
         if platform not in ['mac']:
-                # pwd(3)
+            # pwd(3)
             exts.append( Extension('pwd', ['pwdmodule.c']) )
             # grp(3)
             exts.append( Extension('grp', ['grpmodule.c']) )
             # spwd, shadow passwords
-            exts.append( Extension('spwd', ['spwdmodule.c']) )
+            if (sysconfig.get_config_var('HAVE_GETSPNAM') or
+                    sysconfig.get_config_var('HAVE_GETSPENT')):
+                exts.append( Extension('spwd', ['spwdmodule.c']) )
         # select(2); not on ancient System V
         exts.append( Extension('select', ['selectmodule.c']) )