]> granicus.if.org Git - python/commitdiff
Rene Liebscher: if we have to run the same sub-command multiple times
authorGreg Ward <gward@python.net>
Sat, 16 Sep 2000 16:04:59 +0000 (16:04 +0000)
committerGreg Ward <gward@python.net>
Sat, 16 Sep 2000 16:04:59 +0000 (16:04 +0000)
(eg. "bdist_dumb", to generate both ZIP and tar archives in the same
run), tell all but the last run to keep temp files -- this just gets
rid of the need to pseudo-install the same files multiple times.

Lib/distutils/command/bdist.py

index cc0c3985cf19fd956393525aff7c9b83818249fe..8651e70954bed3c20bfaa5999275e6e3f1fe31b0 100644 (file)
@@ -90,7 +90,8 @@ class bdist (Command):
         # "build/bdist.<plat>/dumb", "build/bdist.<plat>/rpm", etc.)
         if self.bdist_base is None:
             build_base = self.get_finalized_command('build').build_base
-            self.bdist_base = os.path.join(build_base, 'bdist.' + self.plat_name)
+            self.bdist_base = os.path.join(build_base,
+                                           'bdist.' + self.plat_name)
 
         self.ensure_string_list('formats')
         if self.formats is None:
@@ -109,16 +110,28 @@ class bdist (Command):
 
     def run (self):
 
+        # Figure out which sub-commands we need to run.
+        commands = []
         for format in self.formats:
             try:
-                cmd_name = self.format_command[format][0]
+                commands.append(self.format_command[format][0])
             except KeyError:
-                raise DistutilsOptionError, \
-                      "invalid format '%s'" % format
+                raise DistutilsOptionError, "invalid format '%s'" % format
 
+        # Reinitialize and run each command.
+        for i in range(len(self.formats)):
+            cmd_name = commands[i]
             sub_cmd = self.reinitialize_command(cmd_name)
             if cmd_name not in self.no_format_option:
-                sub_cmd.format = format
+                sub_cmd.format = self.formats[i]
+
+            print ("bdist.run: format=%s, command=%s, rest=%s" %
+                   (self.formats[i], cmd_name, commands[i+1:]))
+
+            # If we're going to need to run this command again, tell it to
+            # keep its temporary files around so subsequent runs go faster.
+            if cmd_name in commands[i+1:]:
+                sub_cmd.keep_temp = 1
             self.run_command (cmd_name)
 
     # run()