added local get_platform/set_platform APIs in distutils.sysconfig
diff --git a/Lib/distutils/command/bdist.py b/Lib/distutils/command/bdist.py
index 764024a..d7910b1 100644
--- a/Lib/distutils/command/bdist.py
+++ b/Lib/distutils/command/bdist.py
@@ -6,8 +6,8 @@
 __revision__ = "$Id$"
 
 import os
-from sysconfig import get_platform
 
+from distutils.util import get_platform
 from distutils.core import Command
 from distutils.errors import DistutilsPlatformError, DistutilsOptionError
 
diff --git a/Lib/distutils/command/bdist_dumb.py b/Lib/distutils/command/bdist_dumb.py
index f7331d5..7c60d39 100644
--- a/Lib/distutils/command/bdist_dumb.py
+++ b/Lib/distutils/command/bdist_dumb.py
@@ -8,8 +8,9 @@
 
 import os
 
-from sysconfig import get_python_version, get_platform
+from sysconfig import get_python_version
 
+from distutils.util import get_platform
 from distutils.core import Command
 from distutils.dir_util import remove_tree, ensure_relative
 from distutils.errors import DistutilsPlatformError
diff --git a/Lib/distutils/command/bdist_msi.py b/Lib/distutils/command/bdist_msi.py
index 5ecf73b..7257849 100644
--- a/Lib/distutils/command/bdist_msi.py
+++ b/Lib/distutils/command/bdist_msi.py
@@ -7,13 +7,14 @@
 Implements the bdist_msi command.
 """
 import sys, os
-from sysconfig import get_python_version, get_platform
+from sysconfig import get_python_version
 
 from distutils.core import Command
 from distutils.dir_util import remove_tree
 from distutils.version import StrictVersion
 from distutils.errors import DistutilsOptionError
 from distutils import log
+from distutils.util import get_platform
 
 import msilib
 from msilib import schema, sequence, text
diff --git a/Lib/distutils/command/bdist_wininst.py b/Lib/distutils/command/bdist_wininst.py
index 0ece030..88c0532 100644
--- a/Lib/distutils/command/bdist_wininst.py
+++ b/Lib/distutils/command/bdist_wininst.py
@@ -9,12 +9,13 @@
 import os
 import string
 
-from sysconfig import get_python_version, get_platform
+from sysconfig import get_python_version
 
 from distutils.core import Command
 from distutils.dir_util import remove_tree
 from distutils.errors import DistutilsOptionError, DistutilsPlatformError
 from distutils import log
+from distutils.util import get_platform
 
 class bdist_wininst (Command):
 
diff --git a/Lib/distutils/command/build.py b/Lib/distutils/command/build.py
index b84e40d..f84bf35 100644
--- a/Lib/distutils/command/build.py
+++ b/Lib/distutils/command/build.py
@@ -5,8 +5,8 @@
 __revision__ = "$Id$"
 
 import sys, os
-from sysconfig import get_platform
 
+from distutils.util import get_platform
 from distutils.core import Command
 from distutils.errors import DistutilsOptionError
 
diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
index 13bd030..420d7f1 100644
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -9,14 +9,12 @@
 import sys, os, re
 from warnings import warn
 
-from sysconfig import get_platform
-
+from distutils.util import get_platform
 from distutils.core import Command
 from distutils.errors import *
 from distutils.ccompiler import customize_compiler
 from distutils.dep_util import newer_group
 from distutils.extension import Extension
-
 from distutils import log
 
 # this keeps compatibility from 2.3 to 2.5
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
index 68d6227..b5336fe 100644
--- a/Lib/distutils/command/install.py
+++ b/Lib/distutils/command/install.py
@@ -7,15 +7,14 @@
 import sys
 import os
 
-from sysconfig import (get_config_vars, get_platform, get_paths, get_path,
-                       get_config_var)
+from sysconfig import get_config_vars, get_paths, get_path, get_config_var
 
 from distutils import log
 from distutils.core import Command
 from distutils.debug import DEBUG
 from distutils.errors import DistutilsPlatformError
 from distutils.file_util import write_file
-from distutils.util import convert_path, change_root
+from distutils.util import convert_path, change_root, get_platform
 from distutils.errors import DistutilsOptionError
 
 def _subst_vars(s, local_vars):
diff --git a/Lib/distutils/msvc9compiler.py b/Lib/distutils/msvc9compiler.py
index 6ac24f8..41d67fa 100644
--- a/Lib/distutils/msvc9compiler.py
+++ b/Lib/distutils/msvc9compiler.py
@@ -23,9 +23,9 @@
                               CompileError, LibError, LinkError)
 from distutils.ccompiler import CCompiler, gen_lib_options
 from distutils import log
-import _winreg
+from distutils.util import get_platform
 
-_sysconfig = __import__('sysconfig')
+import _winreg
 
 RegOpenKeyEx = _winreg.OpenKeyEx
 RegEnumKey = _winreg.EnumKey
@@ -327,7 +327,7 @@
         # multi-init means we would need to check platform same each time...
         assert not self.initialized, "don't init multiple times"
         if plat_name is None:
-            plat_name = _sysconfig.get_platform()
+            plat_name = get_platform()
         # sanity check for platforms to prevent obscure errors later.
         ok_plats = 'win32', 'win-amd64', 'win-ia64'
         if plat_name not in ok_plats:
@@ -348,12 +348,12 @@
             # On AMD64, 'vcvars32.bat amd64' is a native build env; to cross
             # compile use 'x86' (ie, it runs the x86 compiler directly)
             # No idea how itanium handles this, if at all.
-            if plat_name == _sysconfig.get_platform() or plat_name == 'win32':
+            if plat_name == get_platform() or plat_name == 'win32':
                 # native build or cross-compile to win32
                 plat_spec = PLAT_TO_VCVARS[plat_name]
             else:
                 # cross compile from win32 -> some 64bit
-                plat_spec = PLAT_TO_VCVARS[_sysconfig.get_platform()] + '_' + \
+                plat_spec = PLAT_TO_VCVARS[get_platform()] + '_' + \
                             PLAT_TO_VCVARS[plat_name]
 
             vc_env = query_vcvarsall(VERSION, plat_spec)
diff --git a/Lib/distutils/tests/test_util.py b/Lib/distutils/tests/test_util.py
index 50f9ac1..348b42b 100644
--- a/Lib/distutils/tests/test_util.py
+++ b/Lib/distutils/tests/test_util.py
@@ -90,99 +90,12 @@
     def _get_uname(self):
         return self._uname
 
-    def _test_get_platform(self):
-
-        # windows XP, 32bits
-        os.name = 'nt'
-        sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) '
-                       '[MSC v.1310 32 bit (Intel)]')
-        sys.platform = 'win32'
-        self.assertEquals(get_platform(), 'win32')
-
-        # windows XP, amd64
-        os.name = 'nt'
-        sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) '
-                       '[MSC v.1310 32 bit (Amd64)]')
-        sys.platform = 'win32'
-        self.assertEquals(get_platform(), 'win-amd64')
-
-        # windows XP, itanium
-        os.name = 'nt'
-        sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) '
-                       '[MSC v.1310 32 bit (Itanium)]')
-        sys.platform = 'win32'
-        self.assertEquals(get_platform(), 'win-ia64')
-
-        # macbook
-        os.name = 'posix'
-        sys.version = ('2.5 (r25:51918, Sep 19 2006, 08:49:13) '
-                       '\n[GCC 4.0.1 (Apple Computer, Inc. build 5341)]')
-        sys.platform = 'darwin'
-        self._set_uname(('Darwin', 'macziade', '8.11.1',
-                   ('Darwin Kernel Version 8.11.1: '
-                    'Wed Oct 10 18:23:28 PDT 2007; '
-                    'root:xnu-792.25.20~1/RELEASE_I386'), 'i386'))
-        os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3'
-
-        get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g '
-                                       '-fwrapv -O3 -Wall -Wstrict-prototypes')
-
-        self.assertEquals(get_platform(), 'macosx-10.3-i386')
-
-        # macbook with fat binaries (fat, universal or fat64)
-        os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4'
-        get_config_vars()['CFLAGS'] = ('-arch ppc -arch i386 -isysroot '
-                                       '/Developer/SDKs/MacOSX10.4u.sdk  '
-                                       '-fno-strict-aliasing -fno-common '
-                                       '-dynamic -DNDEBUG -g -O3')
-
-        self.assertEquals(get_platform(), 'macosx-10.4-fat')
-
-        get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch i386 -isysroot '
-                                       '/Developer/SDKs/MacOSX10.4u.sdk  '
-                                       '-fno-strict-aliasing -fno-common '
-                                       '-dynamic -DNDEBUG -g -O3')
-
-        self.assertEquals(get_platform(), 'macosx-10.4-intel')
-
-        get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc -arch i386 -isysroot '
-                                       '/Developer/SDKs/MacOSX10.4u.sdk  '
-                                       '-fno-strict-aliasing -fno-common '
-                                       '-dynamic -DNDEBUG -g -O3')
-        self.assertEquals(get_platform(), 'macosx-10.4-fat3')
-
-        get_config_vars()['CFLAGS'] = ('-arch ppc64 -arch x86_64 -arch ppc -arch i386 -isysroot '
-                                       '/Developer/SDKs/MacOSX10.4u.sdk  '
-                                       '-fno-strict-aliasing -fno-common '
-                                       '-dynamic -DNDEBUG -g -O3')
-        self.assertEquals(get_platform(), 'macosx-10.4-universal')
-
-        get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc64 -isysroot '
-                                       '/Developer/SDKs/MacOSX10.4u.sdk  '
-                                       '-fno-strict-aliasing -fno-common '
-                                       '-dynamic -DNDEBUG -g -O3')
-
-        self.assertEquals(get_platform(), 'macosx-10.4-fat64')
-
-        for arch in ('ppc', 'i386', 'x86_64', 'ppc64'):
-            get_config_vars()['CFLAGS'] = ('-arch %s -isysroot '
-                                           '/Developer/SDKs/MacOSX10.4u.sdk  '
-                                           '-fno-strict-aliasing -fno-common '
-                                           '-dynamic -DNDEBUG -g -O3'%(arch,))
-
-            self.assertEquals(get_platform(), 'macosx-10.4-%s'%(arch,))
-
-        # linux debian sarge
-        os.name = 'posix'
-        sys.version = ('2.3.5 (#1, Jul  4 2007, 17:28:59) '
-                       '\n[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]')
-        sys.platform = 'linux2'
-        self._set_uname(('Linux', 'aglae', '2.6.21.1dedibox-r7',
-                    '#1 Mon Apr 30 17:25:38 CEST 2007', 'i686'))
-
-        self.assertEquals(get_platform(), 'linux-i686')
-
-        # XXX more platforms to tests here
+    def test_get_platform(self):
+        platform = util.get_platform()
+        self.assertEquals(platform, get_platform())
+        util.set_platform('MyOwnPlatform')
+        self.assertEquals('MyOwnPlatform', util.get_platform())
+        util.set_platform(platform)
 
     def test_convert_path(self):
         # linux/mac
diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py
index 8650d45..fbd3a67 100644
--- a/Lib/distutils/util.py
+++ b/Lib/distutils/util.py
@@ -16,10 +16,27 @@
 from distutils.errors import DistutilsByteCompileError
 
 _sysconfig = __import__('sysconfig')
+_PLATFORM = None
 
-# kept for backward compatibility
-# since this API was relocated
-get_platform = _sysconfig.get_platform
+def get_platform():
+    """Return a string that identifies the current platform.
+
+    By default, will return the value returned by sysconfig.get_platform(),
+    but it can be changed by calling set_platform().
+    """
+    global _PLATFORM
+    if _PLATFORM is None:
+        _PLATFORM = _sysconfig.get_platform()
+    return _PLATFORM
+
+def set_platform(identifier):
+    """Sets the platform string identifier returned by get_platform().
+
+    Note that this change doesn't impact the value returned by
+    sysconfig.get_platform() and is local to Distutils
+    """
+    global _PLATFORM
+    _PLATFORM = identifier
 
 def convert_path(pathname):
     """Return 'pathname' as a name that will work on the native filesystem.