From: Tarek Ziadé Date: Thu, 9 Apr 2009 22:51:41 +0000 (+0000) Subject: Merged revisions 71415 via svnmerge from X-Git-Tag: 3.0~248 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7d7133d581ba4dfc31efb23ac62fdf92c05f2c4c;p=thirdparty%2FPython%2Fcpython.git Merged revisions 71415 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ................ r71415 | tarek.ziade | 2009-04-10 00:02:39 +0200 (Fri, 10 Apr 2009) | 9 lines Merged revisions 71413 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r71413 | tarek.ziade | 2009-04-09 23:36:44 +0200 (Thu, 09 Apr 2009) | 1 line Fixed #5731: Distutils bdist_wininst no longer worked on non-Windows platforms ........ ................ --- diff --git a/Lib/distutils/command/bdist_wininst.py b/Lib/distutils/command/bdist_wininst.py index e997e8f09446..d6d01c630d44 100644 --- a/Lib/distutils/command/bdist_wininst.py +++ b/Lib/distutils/command/bdist_wininst.py @@ -330,9 +330,14 @@ class bdist_wininst(Command): directory = os.path.dirname(__file__) # we must use a wininst-x.y.exe built with the same C compiler # used for python. XXX What about mingw, borland, and so on? - if self.plat_name == 'win32': - sfix = '' + + # if plat_name starts with "win" but is not "win32" + # we want to strip "win" and leave the rest (e.g. -amd64) + # for all other cases, we don't want any suffix + if self.plat_name != 'win32' and self.plat_name[:3] == 'win': + sfix = self.plat_name[3:] else: - sfix = self.plat_name[3:] # strip 'win' - leaves eg '-amd64' + sfix = '' + filename = os.path.join(directory, "wininst-%.1f%s.exe" % (bv, sfix)) return open(filename, "rb").read() diff --git a/Lib/distutils/tests/test_bdist_wininst.py b/Lib/distutils/tests/test_bdist_wininst.py new file mode 100644 index 000000000000..de6601fbb7ef --- /dev/null +++ b/Lib/distutils/tests/test_bdist_wininst.py @@ -0,0 +1,34 @@ +"""Tests for distutils.command.bdist_wininst.""" +import unittest +import os + +from distutils.dist import Distribution +from distutils.command.bdist_wininst import bdist_wininst +from distutils.tests import support + +class BuildWinInstTestCase(support.TempdirManager, + unittest.TestCase): + + def test_get_exe_bytes(self): + + # issue5731: command was broken on non-windows platforms + # this test makes sure it works now for every platform + # let's create a command + tmp_dir = self.mkdtemp() + pkg_dir = os.path.join(tmp_dir, 'foo') + os.mkdir(pkg_dir) + dist = Distribution() + cmd = bdist_wininst(dist) + cmd.ensure_finalized() + + # let's run the code that finds the right wininst*.exe file + # and make sure it finds it and returns its content + # no matter what platform we have + exe_file = cmd.get_exe_bytes() + self.assert_(len(exe_file) > 10) + +def test_suite(): + return unittest.makeSuite(BuildWinInstTestCase) + +if __name__ == '__main__': + test_support.run_unittest(test_suite()) diff --git a/Misc/NEWS b/Misc/NEWS index ab6645af2a0d..022141b7be8c 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -216,6 +216,9 @@ Core and Builtins Library ------- +- Issue #5731: Distutils bdist_wininst no longer worked on non-Windows + platforms. Initial patch by Paul Moore. + - Issue #4998: The memory saving effect of __slots__ had been lost on Fractions which inherited from numbers.py which did not have __slots__ defined. The numbers hierarchy now has its own __slots__ declarations.