Bullet-proofing of 'make_release_tree()':
authorGreg Ward <gward@python.net>
Wed, 6 Sep 2000 02:18:59 +0000 (02:18 +0000)
committerGreg Ward <gward@python.net>
Wed, 6 Sep 2000 02:18:59 +0000 (02:18 +0000)
  - 'mkpath()' the distribution dir in case of empty manifest
  - warn if empty manifest
  - detect, warn about, and skip non-regular files in manifest

Lib/distutils/command/sdist.py

index 1bf297fdcb3c0f4a186481debdcbee3358627e2c..6de703ec928a1f1b07e3b0685d6b298a69205b8a 100644 (file)
@@ -405,9 +405,11 @@ class sdist (Command):
         to be distributed.
         """
         # Create all the directories under 'base_dir' necessary to
-        # put 'files' there.
-        dir_util.create_tree (base_dir, files,
-                              verbose=self.verbose, dry_run=self.dry_run)
+        # put 'files' there; the 'mkpath()' is just so we don't die
+        # if the manifest happens to be empty.
+        self.mkpath(base_dir)
+        dir_util.create_tree(base_dir, files,
+                             verbose=self.verbose, dry_run=self.dry_run)
 
         # And walk over the list of files, either making a hard link (if
         # os.link exists) to each one that doesn't already exist in its
@@ -423,10 +425,16 @@ class sdist (Command):
             link = None
             msg = "copying files to %s..." % base_dir
 
-        self.announce (msg)
+        if not files:
+            self.warn("no files to distribute -- empty manifest?")
+        else:
+            self.announce (msg)
         for file in files:
-            dest = os.path.join (base_dir, file)
-            self.copy_file (file, dest, link=link)
+            if not os.path.isfile(file):
+                self.warn("'%s' not a regular file -- skipping" % file)
+            else:
+                dest = os.path.join (base_dir, file)
+                self.copy_file (file, dest, link=link)
 
     # make_release_tree ()