- Issue #2385: distutils.core.run_script() makes __file__ available, so the
  controlled environment will more closely mirror the typical script
  environment.  This supports setup.py scripts that refer to data files.
diff --git a/Lib/distutils/core.py b/Lib/distutils/core.py
index c40dd0a..640d6b5 100644
--- a/Lib/distutils/core.py
+++ b/Lib/distutils/core.py
@@ -210,8 +210,9 @@
     _setup_stop_after = stop_after
 
     save_argv = sys.argv
-    g = {}
+    g = {'__file__': script_name}
     l = {}
+    os.chdir(os.path.dirname(script_name) or os.curdir)
     try:
         try:
             sys.argv[0] = script_name
diff --git a/Lib/distutils/tests/test_core.py b/Lib/distutils/tests/test_core.py
new file mode 100644
index 0000000..6de58d9
--- /dev/null
+++ b/Lib/distutils/tests/test_core.py
@@ -0,0 +1,40 @@
+"""Tests for distutils.core."""
+
+import StringIO
+import distutils.core
+import os
+import test.test_support
+import unittest
+
+
+# setup script that uses __file__
+setup_using___file__ = """\
+
+__file__
+
+from distutils.core import setup
+setup()
+"""
+
+
+class CoreTestCase(unittest.TestCase):
+
+    def tearDown(self):
+        os.remove(test.test_support.TESTFN)
+
+    def write_setup(self, text):
+        return fn
+
+    def test_run_setup_provides_file(self):
+        # Make sure the script can use __file__; if that's missing, the test
+        # setup.py script will raise NameError.
+        fn = test.test_support.TESTFN
+        open(fn, "w").write(setup_using___file__)
+        distutils.core.run_setup(fn)
+
+
+def test_suite():
+    return unittest.makeSuite(CoreTestCase)
+
+if __name__ == "__main__":
+    unittest.main(defaultTest="test_suite")
diff --git a/Misc/NEWS b/Misc/NEWS
index 8742cb4..c07f546 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -18,6 +18,10 @@
 Library
 -------
 
+- Issue #2385: distutils.core.run_script() makes __file__ available, so the
+  controlled environment will more closely mirror the typical script
+  environment.  This supports setup.py scripts that refer to data files.
+
 Tests
 -----