# HG changeset patch # Parent 284c414f9edb888192aa041d7b84900bbec2eb1f diff --git a/Lib/distutils/filelist.py b/Lib/distutils/filelist.py --- a/Lib/distutils/filelist.py +++ b/Lib/distutils/filelist.py @@ -332,7 +332,7 @@ sep = os.sep if sep != '/': sep = re.escape(sep) - pattern_re = "^" + sep.join((prefix_re, ".*" + pattern_re)) + pattern_re = "^%s%s(.*%s)?%s" % (prefix_re, sep, sep, pattern_re) else: # no prefix -- respect anchor flag if anchor: pattern_re = "^" + pattern_re diff --git a/Lib/distutils/tests/test_filelist.py b/Lib/distutils/tests/test_filelist.py --- a/Lib/distutils/tests/test_filelist.py +++ b/Lib/distutils/tests/test_filelist.py @@ -21,6 +21,7 @@ global-include *.txt global-exclude *.tmp recursive-include f *.oo +recursive-include bar baz.* recursive-exclude global *.x graft dir prune dir3 @@ -82,6 +83,12 @@ l('dir/dir2/graft2'), l('dir3/ok'), l('dir3/sub/ok.txt'), + # 'recursive-include bar baz.*' only includes + # files whose names *begin* with 'baz.'. + l('bar/baz.py'), + l('bar/test_baz.py'), + l('bar/x/baz.py'), + l('bar/x/test_baz.py'), ] for line in MANIFEST_IN.split('\n'): @@ -92,6 +99,7 @@ wanted = ['ok', 'buildout.cfg', 'four.txt', l('.hg/last-message.txt'), l('global/one.txt'), l('global/two.txt'), l('f/o/f.oo'), + l('bar/baz.py'), l('bar/x/baz.py'), l('dir/graft-one'), l('dir/dir2/graft2')] self.assertEqual(file_list.files, wanted)