@@ -502,13 +502,20 @@ def run(self):
502
502
return FileHandler
503
503
504
504
505
- def _get_data_files (data_specs , existing ):
505
+ def _glob_pjoin (* parts ):
506
+ """Join paths for glob processing"""
507
+ if parts [0 ] in ('.' , '' ):
508
+ parts = parts [1 :]
509
+ return pjoin (* parts ).replace (os .sep , '/' )
510
+
511
+
512
+ def _get_data_files (data_specs , existing , top = HERE ):
506
513
"""Expand data file specs into valid data files metadata.
507
514
508
515
Parameters
509
516
----------
510
517
data_specs: list of tuples
511
- See [createcmdclass ] for description.
518
+ See [create_cmdclass ] for description.
512
519
existing: list of tuples
513
520
The existing distrubution data_files metadata.
514
521
@@ -524,14 +531,16 @@ def _get_data_files(data_specs, existing):
524
531
# Extract the files and assign them to the proper data
525
532
# files path.
526
533
for (path , dname , pattern ) in data_specs or []:
534
+ if os .path .isabs (dname ):
535
+ dname = os .path .relpath (dname , top )
527
536
dname = dname .replace (os .sep , '/' )
528
- offset = len (dname ) + 1
529
-
530
- files = _get_files (pjoin (dname , pattern ))
537
+ offset = 0 if dname in ('.' , '' ) else len (dname ) + 1
538
+ files = _get_files (_glob_pjoin (dname , pattern ), top = top )
531
539
for fname in files :
532
540
# Normalize the path.
533
541
root = os .path .dirname (fname )
534
- full_path = '/' .join ([path , root [offset :]])
542
+ full_path = _glob_pjoin (path , root [offset :])
543
+ print (dname , root , full_path , offset )
535
544
if full_path .endswith ('/' ):
536
545
full_path = full_path [:- 1 ]
537
546
file_data [full_path ].append (fname )
@@ -576,7 +585,8 @@ def _get_files(file_patterns, top=HERE):
576
585
dirnames .remove ('node_modules' )
577
586
for m in matchers :
578
587
for filename in filenames :
579
- fn = os .path .relpath (pjoin (root , filename ), top )
588
+ fn = os .path .relpath (_glob_pjoin (root , filename ), top )
589
+ fn = fn .replace (os .sep , '/' )
580
590
if m (fn ):
581
591
files .add (fn .replace (os .sep , '/' ))
582
592
@@ -601,7 +611,7 @@ def _get_package_data(root, file_patterns=None):
601
611
"""
602
612
if file_patterns is None :
603
613
file_patterns = ['*' ]
604
- return _get_files (file_patterns , pjoin (HERE , root ))
614
+ return _get_files (file_patterns , _glob_pjoin (HERE , root ))
605
615
606
616
607
617
def _compile_pattern (pat , ignore_case = True ):
0 commit comments