equal
deleted
inserted
replaced
61 |
61 |
62 |
62 |
63 def read_boilerplate(data_dir, filename): |
63 def read_boilerplate(data_dir, filename): |
64 return open(join(data_dir, "builder/boilerplate", filename)).read() |
64 return open(join(data_dir, "builder/boilerplate", filename)).read() |
65 |
65 |
|
66 |
66 def copy_boilerplate(data_dir, filename, output_dir): |
67 def copy_boilerplate(data_dir, filename, output_dir): |
67 filename = join(data_dir, "builder/boilerplate", filename) |
68 filename = join(data_dir, "builder/boilerplate", filename) |
68 shutil.copy(filename, output_dir) |
69 shutil.copy(filename, output_dir) |
69 |
70 |
70 |
71 |
100 shutil.copy2(srcname, dstname) |
101 shutil.copy2(srcname, dstname) |
101 except (IOError, os.error), why: |
102 except (IOError, os.error), why: |
102 errors.append((srcname, dstname, why)) |
103 errors.append((srcname, dstname, why)) |
103 if errors: |
104 if errors: |
104 print errors |
105 print errors |
|
106 |
105 |
107 |
106 def check_html_file(source_file, dest_path): |
108 def check_html_file(source_file, dest_path): |
107 """ Checks if a base HTML-file is available in the PyJamas |
109 """ Checks if a base HTML-file is available in the PyJamas |
108 output directory. |
110 output directory. |
109 If the HTML-file isn't available, it will be created. |
111 If the HTML-file isn't available, it will be created. |
521 print "Created app file %s:%s: %s" % ( |
523 print "Created app file %s:%s: %s" % ( |
522 app_name, platform, out_path) |
524 app_name, platform, out_path) |
523 |
525 |
524 return app_files |
526 return app_files |
525 |
527 |
|
528 |
526 def flattenlist(ll): |
529 def flattenlist(ll): |
527 res = [] |
530 res = [] |
528 for l in ll: |
531 for l in ll: |
529 res += l |
532 res += l |
530 return res |
533 return res |
531 |
534 |
532 # creates sub-dependencies e.g. pyjamas.ui.Widget |
535 |
533 # creates pyjamas.ui.Widget, pyjamas.ui and pyjamas. |
|
534 def subdeps(m): |
536 def subdeps(m): |
|
537 """ |
|
538 creates sub-dependencies e.g. pyjamas.ui.Widget |
|
539 creates pyjamas.ui.Widget, pyjamas.ui and pyjamas. |
|
540 """ |
535 d = [] |
541 d = [] |
536 m = m.split(".") |
542 m = m.split(".") |
537 for i in range(0, len(m)): |
543 for i in range(0, len(m)): |
538 d.append('.'.join(m[:i+1])) |
544 d.append('.'.join(m[:i+1])) |
539 return d |
545 return d |
540 |
546 |
541 import time |
547 import time |
|
548 |
542 |
549 |
543 def add_subdeps(deps, mod_name): |
550 def add_subdeps(deps, mod_name): |
544 sd = subdeps(mod_name) |
551 sd = subdeps(mod_name) |
545 if len(sd) == 1: |
552 if len(sd) == 1: |
546 return [] |
553 return [] |
556 if parent not in res: |
563 if parent not in res: |
557 res.append(parent) |
564 res.append(parent) |
558 #print deps |
565 #print deps |
559 return res |
566 return res |
560 |
567 |
561 # makes unique and preserves list order |
568 |
562 def uniquify(md): |
569 def uniquify(md): |
|
570 """ |
|
571 makes unique and preserves list order |
|
572 """ |
563 res = [] |
573 res = [] |
564 for m in md: |
574 for m in md: |
565 if m not in res: |
575 if m not in res: |
566 res.append(m) |
576 res.append(m) |
567 return res |
577 return res |
|
578 |
568 |
579 |
569 def filter_mods(app_name, md): |
580 def filter_mods(app_name, md): |
570 while 'sys' in md: |
581 while 'sys' in md: |
571 md.remove('sys') |
582 md.remove('sys') |
572 while 'pyjslib' in md: |
583 while 'pyjslib' in md: |
576 md = filter(lambda x: not x.endswith('.js'), md) |
587 md = filter(lambda x: not x.endswith('.js'), md) |
577 md = map(pyjs.strip_py, md) |
588 md = map(pyjs.strip_py, md) |
578 |
589 |
579 return uniquify(md) |
590 return uniquify(md) |
580 |
591 |
|
592 |
581 def filter_deps(app_name, deps): |
593 def filter_deps(app_name, deps): |
582 |
594 |
583 res = {} |
595 res = {} |
584 for (k, l) in deps.items(): |
596 for (k, l) in deps.items(): |
585 mods = filter_mods(k, l) |
597 mods = filter_mods(k, l) |
586 while k in mods: |
598 while k in mods: |
587 mods.remove(k) |
599 mods.remove(k) |
588 res[k] = mods |
600 res[k] = mods |
589 return res |
601 return res |
590 |
602 |
|
603 |
591 def has_nodeps(mod, deps): |
604 def has_nodeps(mod, deps): |
592 if not deps.has_key(mod) or not deps[mod]: |
605 if not deps.has_key(mod) or not deps[mod]: |
593 return True |
606 return True |
594 return False |
607 return False |
|
608 |
595 |
609 |
596 def nodeps_list(mod_list, deps): |
610 def nodeps_list(mod_list, deps): |
597 res = [] |
611 res = [] |
598 for mod in mod_list: |
612 for mod in mod_list: |
599 if has_nodeps(mod, deps): |
613 if has_nodeps(mod, deps): |
653 |
667 |
654 ordered_deps.reverse() |
668 ordered_deps.reverse() |
655 |
669 |
656 return ordered_deps |
670 return ordered_deps |
657 |
671 |
|
672 |
658 def main(): |
673 def main(): |
659 global app_platforms |
674 global app_platforms |
660 |
675 |
661 parser = OptionParser(usage = usage, version = version) |
676 parser = OptionParser(usage = usage, version = version) |
662 parser.add_option("-o", "--output", dest="output", |
677 parser.add_option("-o", "--output", dest="output", |