Catch syntax errors from processing template lines and turn them into
  mere warnings.
Call 'findall()' on our FileList object before we start using it seriously.
diff --git a/Lib/distutils/command/sdist.py b/Lib/distutils/command/sdist.py
index 4c2acf6..4765d7f 100644
--- a/Lib/distutils/command/sdist.py
+++ b/Lib/distutils/command/sdist.py
@@ -14,7 +14,7 @@
      create_tree, remove_tree, newer, write_file, \
      check_archive_formats
 from distutils.text_file import TextFile
-from distutils.errors import DistutilsExecError, DistutilsOptionError
+from distutils.errors import *
 from distutils.filelist import FileList
 
 
@@ -227,6 +227,8 @@
                            "(using default file list)") %
                           self.template)
 
+            self.filelist.findall()
+
             # Add default file set to 'files'
             if self.use_defaults:
                 self.add_defaults()
@@ -335,7 +337,12 @@
             if line is None:            # end of file
                 break
 
-            self.filelist.process_template_line(line)
+            try:
+                self.filelist.process_template_line(line)
+            except DistutilsTemplateError, msg:
+                self.warn("%s, line %d: %s" % (template.filename,
+                                               template.current_line,
+                                               msg))
 
     # read_template ()