Kaydet (Commit) 1ac98027 authored tarafından Greg Ward's avatar Greg Ward

Rene Liebscher/Thomas Heller:

* ensure the "dist" directory exists
* raise exception if using for modules containing compiled extensions
  on a non-win32 platform.
* don't create an .ini file anymore (it was just for debugging)
üst cec15686
...@@ -63,6 +63,12 @@ class bdist_wininst (Command): ...@@ -63,6 +63,12 @@ class bdist_wininst (Command):
def run (self): def run (self):
if (sys.platform != "win32" and
(self.distribution.has_ext_modules() or
self.distribution.has_c_libraries())):
raise DistutilsPlatformError, \
("distribution contains extensions and/or C libraries; "
"must be compiled on a Windows 32 platform")
self.run_command ('build') self.run_command ('build')
...@@ -103,21 +109,16 @@ class bdist_wininst (Command): ...@@ -103,21 +109,16 @@ class bdist_wininst (Command):
# run() # run()
def create_inifile (self): def get_inidata (self):
# Create an inifile containing data describing the installation. # Return data describing the installation.
# This could be done without creating a real file, but
# a file is (at least) useful for debugging bdist_wininst.
lines = []
metadata = self.distribution.metadata metadata = self.distribution.metadata
ini_name = "%s.ini" % metadata.get_fullname()
self.announce ("creating %s" % ini_name)
inifile = open (ini_name, "w")
# Write the [metadata] section. Values are written with # Write the [metadata] section. Values are written with
# repr()[1:-1], so they do not contain unprintable characters, and # repr()[1:-1], so they do not contain unprintable characters, and
# are not surrounded by quote chars. # are not surrounded by quote chars.
inifile.write ("[metadata]\n") lines.append ("[metadata]")
# 'info' will be displayed in the installer's dialog box, # 'info' will be displayed in the installer's dialog box,
# describing the items to be installed. # describing the items to be installed.
...@@ -129,27 +130,28 @@ class bdist_wininst (Command): ...@@ -129,27 +130,28 @@ class bdist_wininst (Command):
if data: if data:
info = info + ("\n %s: %s" % \ info = info + ("\n %s: %s" % \
(string.capitalize (name), data)) (string.capitalize (name), data))
inifile.write ("%s=%s\n" % (name, repr (data)[1:-1])) lines.append ("%s=%s" % (name, repr (data)[1:-1]))
# The [setup] section contains entries controlling # The [setup] section contains entries controlling
# the installer runtime. # the installer runtime.
inifile.write ("\n[Setup]\n") lines.append ("\n[Setup]")
inifile.write ("info=%s\n" % repr (info)[1:-1]) lines.append ("info=%s" % repr (info)[1:-1])
inifile.write ("pthname=%s.%s\n" % (metadata.name, metadata.version)) lines.append ("pthname=%s.%s" % (metadata.name, metadata.version))
if self.target_version: if self.target_version:
inifile.write ("target_version=%s\n" % self.target_version) lines.append ("target_version=%s" % self.target_version)
title = self.distribution.get_fullname() title = self.distribution.get_fullname()
inifile.write ("title=%s\n" % repr (title)[1:-1]) lines.append ("title=%s" % repr (title)[1:-1])
inifile.close() return string.join (lines, "\n")
return ini_name
# create_inifile() # get_inidata()
def create_exe (self, arcname, fullname): def create_exe (self, arcname, fullname):
import struct#, zlib import struct
self.mkpath(self.dist_dir)
cfgdata = open (self.create_inifile()).read() cfgdata = self.get_inidata()
installer_name = os.path.join(self.dist_dir, installer_name = os.path.join(self.dist_dir,
"%s.win32.exe" % fullname) "%s.win32.exe" % fullname)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment