diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
index a0464b4..a3982c1 100644
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -61,6 +61,7 @@
 
 
     def set_default_options (self):
+        self.extensions = None
         self.dir = None
         self.include_dirs = None
         self.define = None
@@ -90,10 +91,14 @@
     def run (self):
 
         self.set_final_options ()
-        (extensions, package) = \
-            self.distribution.get_options ('ext_modules', 'package')
 
-        # 'extensions', as supplied by setup.py, is a list of 2-tuples.
+        # XXX we should care about the package we compile extensions
+        # into! 
+
+        #(extensions, package) = \
+        #    self.distribution.get_options ('ext_modules', 'package')
+
+        # 'self.extensions', as supplied by setup.py, is a list of 2-tuples.
         # Each tuple is simple:
         #    (ext_name, build_info)
         # build_info is a dictionary containing everything specific to
@@ -101,13 +106,16 @@
         # should be handled by general distutils options passed from
         # setup.py down to right here, but that's not taken care of yet.)
 
+        if not self.extensions:
+            return
 
-        # First, sanity-check the 'extensions' list
-        self.check_extensions_list (extensions)
+        # First, sanity-check the 'self.extensions' list
+        self.check_extensions_list (self.extensions)
 
         # Setup the CCompiler object that we'll use to do all the
         # compiling and linking
-        self.compiler = new_compiler (verbose=self.distribution.verbose,
+        self.compiler = new_compiler (plat=os.environ.get ('PLAT'),
+                                      verbose=self.distribution.verbose,
                                       dry_run=self.distribution.dry_run)
         if self.include_dirs is not None:
             self.compiler.set_include_dirs (self.include_dirs)
@@ -128,7 +136,7 @@
             self.compiler.set_link_objects (self.link_objects)
                                       
         # Now the real loop over extensions
-        self.build_extensions (extensions)
+        self.build_extensions (self.extensions)
 
             
 
diff --git a/Lib/distutils/command/build_py.py b/Lib/distutils/command/build_py.py
index d75bf3f..28aefa9 100644
--- a/Lib/distutils/command/build_py.py
+++ b/Lib/distutils/command/build_py.py
@@ -20,10 +20,14 @@
 
     def set_default_options (self):
         self.dir = None
+        self.modules = None
+        self.package = None
 
     def set_final_options (self):
         self.set_undefined_options ('build',
                                     ('libdir', 'dir'))
+        if self.package is None:
+            self.package = ''
 
 
     def run (self):
@@ -43,10 +47,6 @@
 
         self.set_final_options ()
 
-        (modules, package) = \
-            self.distribution.get_options ('py_modules', 'package')
-        package = package or ''
-
         infiles = []
         outfiles = []
         missing = []
@@ -56,20 +56,20 @@
         # input files.
 
         # it's ok not to have *any* py files, right?
-        if not modules:
+        if not self.modules:
             return
         
         # XXX we should allow for wildcards, so eg. the Distutils setup.py
         # file would just have to say
         #   py_modules = ['distutils.*', 'distutils.command.*']
         # without having to list each one explicitly.
-        for m in modules:
+        for m in self.modules:
             fn = apply (os.path.join, tuple (string.split (m, '.'))) + '.py'
             if not os.path.exists (fn):
                 missing.append (fn)
             else:
                 infiles.append (fn)
-                outfiles.append (os.path.join (self.dir, package, fn))
+                outfiles.append (os.path.join (self.dir, self.package, fn))
 
         # Blow up if any input files were not found.
         if missing:
