[Python-checkins] r75548 - sandbox/branches/setuptools-0.6/setuptools/command/bdist_wininst.py

phillip.eby python-checkins at python.org
Mon Oct 19 23:47:45 CEST 2009


Author: phillip.eby
Date: Mon Oct 19 23:47:44 2009
New Revision: 75548
Log:
Fix the elusive "double upload bdist_wininst" bug
Modified:
 sandbox/branches/setuptools-0.6/setuptools/command/bdist_wininst.py
Modified: sandbox/branches/setuptools-0.6/setuptools/command/bdist_wininst.py
==============================================================================
--- sandbox/branches/setuptools-0.6/setuptools/command/bdist_wininst.py	(original)
+++ sandbox/branches/setuptools-0.6/setuptools/command/bdist_wininst.py	Mon Oct 19 23:47:44 2009
@@ -2,26 +2,24 @@
 import os, sys
 
 class bdist_wininst(_bdist_wininst):
+ _good_upload = _bad_upload = None
 
 def create_exe(self, arcname, fullname, bitmap=None):
 _bdist_wininst.create_exe(self, arcname, fullname, bitmap)
- dist_files = getattr(self.distribution, 'dist_files', [])
-
+ installer_name = self.get_installer_filename(fullname) 
 if self.target_version:
- installer_name = os.path.join(self.dist_dir,
- "%s.win32-py%s.exe" %
- (fullname, self.target_version))
 pyversion = self.target_version
-
- # fix 2.5 bdist_wininst ignoring --target-version spec
- bad = ('bdist_wininst','any',installer_name)
- if bad in dist_files:
- dist_files.remove(bad)
+ # fix 2.5+ bdist_wininst ignoring --target-version spec
+ self._bad_upload = ('bdist_wininst', 'any', installer_name)
 else:
- installer_name = os.path.join(self.dist_dir,
- "%s.win32.exe" % fullname)
 pyversion = 'any'
- good = ('bdist_wininst', pyversion, installer_name)
+ self._good_upload = ('bdist_wininst', pyversion, installer_name)
+ 
+ def _fix_upload_names(self):
+ good, bad = self._good_upload, self._bad_upload
+ dist_files = getattr(self.distribution, 'dist_files', [])
+ if bad in dist_files:
+ dist_files.remove(bad)
 if good not in dist_files:
 dist_files.append(good)
 
@@ -36,6 +34,49 @@
 self._is_running = True
 try:
 _bdist_wininst.run(self)
+ self._fix_upload_names()
 finally:
 self._is_running = False
 
+
+ if not hasattr(_bdist_wininst, 'get_installer_filename'):
+ def get_installer_filename(self, fullname):
+ # Factored out to allow overriding in subclasses
+ if self.target_version:
+ # if we create an installer for a specific python version,
+ # it's better to include this in the name
+ installer_name = os.path.join(self.dist_dir,
+ "%s.win32-py%s.exe" %
+ (fullname, self.target_version))
+ else:
+ installer_name = os.path.join(self.dist_dir,
+ "%s.win32.exe" % fullname)
+ return installer_name
+ # get_installer_filename()
+ 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /