diff options
Diffstat (limited to 'tools/builds.pm')
-rw-r--r-- | tools/builds.pm | 132 |
1 files changed, 96 insertions, 36 deletions
diff --git a/tools/builds.pm b/tools/builds.pm index 75d34dc079..0b7c768888 100644 --- a/tools/builds.pm +++ b/tools/builds.pm | |||
@@ -16,7 +16,7 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
16 | # icon => 'modelname3', # optional (uses modelname3's icon) | 16 | # icon => 'modelname3', # optional (uses modelname3's icon) |
17 | # voice => 'modelname4' # optional (uses modelname4's voice) | 17 | # voice => 'modelname4' # optional (uses modelname4's voice) |
18 | # release => '3.14', # optional (final release version, if different from above) | 18 | # release => '3.14', # optional (final release version, if different from above) |
19 | # manualok => 1, # optional (builds manual even if target is not stable) | 19 | # manualok => 1, # optional (defaults 1 for status 3 and 0 for rest) |
20 | # } | 20 | # } |
21 | 21 | ||
22 | %builds = ( | 22 | %builds = ( |
@@ -71,10 +71,12 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
71 | }, | 71 | }, |
72 | 'gogearhdd1630' => { | 72 | 'gogearhdd1630' => { |
73 | name => 'Philips GoGear HDD1630', | 73 | name => 'Philips GoGear HDD1630', |
74 | manualok => 0, | ||
74 | status => 3, | 75 | status => 3, |
75 | }, | 76 | }, |
76 | 'gogearhdd6330' => { | 77 | 'gogearhdd6330' => { |
77 | name => 'Philips GoGear HDD6330', | 78 | name => 'Philips GoGear HDD6330', |
79 | manualok => 0, | ||
78 | status => 3, | 80 | status => 3, |
79 | }, | 81 | }, |
80 | 'gogearsa9200' => { | 82 | 'gogearsa9200' => { |
@@ -369,6 +371,7 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
369 | 'creativezenxfi3' => { | 371 | 'creativezenxfi3' => { |
370 | name => 'Creative Zen X-Fi3', | 372 | name => 'Creative Zen X-Fi3', |
371 | status => 3, | 373 | status => 3, |
374 | manualok => 0, | ||
372 | }, | 375 | }, |
373 | 'sonynwze350' => { | 376 | 'sonynwze350' => { |
374 | name => 'Sony NWZ-E350', | 377 | name => 'Sony NWZ-E350', |
@@ -378,10 +381,12 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
378 | 'sonynwze360' => { | 381 | 'sonynwze360' => { |
379 | name => 'Sony NWZ-E360', | 382 | name => 'Sony NWZ-E360', |
380 | status => 3, | 383 | status => 3, |
384 | manualok => 0, | ||
381 | }, | 385 | }, |
382 | 'sonynwze370' => { | 386 | 'sonynwze370' => { |
383 | name => 'Sony NWZ-E370/E380', | 387 | name => 'Sony NWZ-E370/E380', |
384 | status => 3, | 388 | status => 3, |
389 | manualok => 0, | ||
385 | }, | 390 | }, |
386 | 'sonynwze450' => { | 391 | 'sonynwze450' => { |
387 | name => 'Sony NWZ-E450', | 392 | name => 'Sony NWZ-E450', |
@@ -424,11 +429,13 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
424 | }, | 429 | }, |
425 | 'creativezenxfi' => { | 430 | 'creativezenxfi' => { |
426 | name => 'Creative Zen X-Fi', | 431 | name => 'Creative Zen X-Fi', |
427 | status => 3 | 432 | status => 3, |
433 | manualok => 0, | ||
428 | }, | 434 | }, |
429 | 'creativezenxfistyle' => { | 435 | 'creativezenxfistyle' => { |
430 | name => 'Creative Zen X-Fi Style', | 436 | name => 'Creative Zen X-Fi Style', |
431 | status => 3 | 437 | status => 3, |
438 | manualok => 0, | ||
432 | }, | 439 | }, |
433 | 'creativezen' => { | 440 | 'creativezen' => { |
434 | name => 'Creative Zen', | 441 | name => 'Creative Zen', |
@@ -436,24 +443,30 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
436 | }, | 443 | }, |
437 | 'creativezenmozaic' => { | 444 | 'creativezenmozaic' => { |
438 | name => 'Creative Zen Mozaic', | 445 | name => 'Creative Zen Mozaic', |
439 | status => 3 | 446 | status => 3, |
447 | manualok => 0, | ||
440 | }, | 448 | }, |
441 | 'agptekrocker' => { | 449 | 'agptekrocker' => { |
442 | name => 'Agptek Rocker', | 450 | name => 'Agptek Rocker', |
443 | status => 2, | 451 | status => 3, |
444 | manualok => 1, # Remove once status moves to 3 | 452 | release => '4.0', # Remove once 4.0 lands |
445 | }, | 453 | }, |
446 | 'xduoox3' => { | 454 | 'xduoox3' => { |
447 | name => 'xDuoo X3', | 455 | name => 'xDuoo X3', |
448 | status => 3, | 456 | status => 3, |
457 | release => '4.0', # Remove once 4.0 lands | ||
449 | }, | 458 | }, |
450 | 'xduoox3ii' => { | 459 | 'xduoox3ii' => { |
451 | name => 'xDuoo X3ii', | 460 | name => 'xDuoo X3ii', |
452 | status => 2, | 461 | manualok => 0, # Remove when manual is written |
462 | status => 3, | ||
463 | release => '4.0', # Remove once 4.0 lands | ||
453 | }, | 464 | }, |
454 | 'xduoox20' => { | 465 | 'xduoox20' => { |
455 | name => 'xDuoo X20', | 466 | name => 'xDuoo X20', |
456 | status => 2, | 467 | manualok => 0, # Remove when manual is written |
468 | status => 3, | ||
469 | release => '4.0', # Remove once 4.0 lands | ||
457 | }, | 470 | }, |
458 | 'fiiom3klinux' => { | 471 | 'fiiom3klinux' => { |
459 | name => 'FiiO M3K (Linux)', | 472 | name => 'FiiO M3K (Linux)', |
@@ -461,16 +474,17 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
461 | }, | 474 | }, |
462 | 'fiiom3k' => { | 475 | 'fiiom3k' => { |
463 | name => 'FiiO M3K', | 476 | name => 'FiiO M3K', |
464 | status => 2, | 477 | status => 3, |
465 | manualok => 1, # Remove once status moves to 3 | 478 | release => '4.0', # Remove once 4.0 lands |
466 | }, | 479 | }, |
467 | 'aigoerosq' => { | 480 | 'aigoerosq' => { |
468 | name => 'AIGO EROS Q / K (Hosted)', | 481 | name => 'AIGO EROS Q / K (Hosted)', |
469 | status => 2, | 482 | status => 2, # Do we promote this to stable? |
470 | }, | 483 | }, |
471 | 'erosqnative' => { | 484 | 'erosqnative' => { |
472 | name => 'AIGO EROS Q / K (Native)', | 485 | name => 'AIGO EROS Q / K (Native)', |
473 | status => 2, | 486 | status => 3, |
487 | release => '4.0', # Remove once 4.0 lands | ||
474 | }, | 488 | }, |
475 | 'ihifi770' => { | 489 | 'ihifi770' => { |
476 | name => 'Xuelin iHIFI 770', | 490 | name => 'Xuelin iHIFI 770', |
@@ -486,8 +500,8 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
486 | }, | 500 | }, |
487 | 'shanlingq1' => { | 501 | 'shanlingq1' => { |
488 | name => 'Shanling Q1', | 502 | name => 'Shanling Q1', |
489 | status => 2, | 503 | status => 3, |
490 | manualok => 1, # Remove once status moves to 3 | 504 | release => '4.0', # Remove once 4.0 lands |
491 | }, | 505 | }, |
492 | ); | 506 | ); |
493 | 507 | ||
@@ -511,7 +525,18 @@ sub usablebuilds { | |||
511 | my @list; | 525 | my @list; |
512 | 526 | ||
513 | for my $b (sort byname keys %builds) { | 527 | for my $b (sort byname keys %builds) { |
514 | push @list, $b if ($builds{$b}{status} >= 2 || defined($builds{$b}{manualok})); | 528 | push @list, $b if ($builds{$b}{status} >= 2); |
529 | } | ||
530 | |||
531 | return @list; | ||
532 | } | ||
533 | |||
534 | sub manualbuilds { | ||
535 | my @list; | ||
536 | |||
537 | for my $b (sort byname keys %builds) { | ||
538 | push @list, $b if (($builds{$b}{status} > 2 && !defined($builds{$b}{manualok})) || | ||
539 | (defined($builds{$b}{manualok}) && ($builds{$b}{manualok} > 0))); | ||
515 | } | 540 | } |
516 | 541 | ||
517 | return @list; | 542 | return @list; |
@@ -572,21 +597,45 @@ sub simbuilds { | |||
572 | 'lang' => 'english', | 597 | 'lang' => 'english', |
573 | 'name' => 'UK English', | 598 | 'name' => 'UK English', |
574 | 'short' => 'en-gb', | 599 | 'short' => 'en-gb', |
575 | 'defengine' => 'espeak', | 600 | 'defengine' => 'piper', |
576 | 'engines' => { | 601 | 'engines' => { |
577 | 'festival' => '--language english', | 602 | 'festival' => '--language english', |
578 | 'espeak' => '-ven-gb -k 5', | 603 | 'espeak' => '-ven-gb -k 5', |
579 | 'gtts' => '-l en -t co.uk', | 604 | 'gtts' => '-l en -t co.uk', |
580 | 'piper' => 'en_GB-cori-high.onnx', | 605 | 'piper' => 'en_GB-semaine-medium.onnx', |
581 | }, | 606 | }, |
582 | 'enabled' => 1, | 607 | 'enabled' => 1, |
583 | }, | 608 | }, |
584 | # Everything else in alphabetical order | 609 | # Everything else in alphabetical order |
610 | 'bulgarian' => { | ||
611 | 'lang' => 'bulgarian', | ||
612 | 'name' => 'Български (Bulgarian)', | ||
613 | 'short' => 'bg', | ||
614 | 'defengine' => 'espeak', # XXX Switch to gtts when buildserver is updated | ||
615 | 'engines' => { | ||
616 | 'espeak' => '-vbg', | ||
617 | 'gtts' => '-l bg', | ||
618 | # No piper voice yet. | ||
619 | }, | ||
620 | 'enabled' => 1, | ||
621 | }, | ||
622 | 'chinese-simp' => { # Mandarin? | ||
623 | 'lang' => 'chinese-simp', | ||
624 | 'name' => '简体中文 (Chinese Simplified)', | ||
625 | 'short' => 'zh_cn', | ||
626 | 'defengine' => 'piper', | ||
627 | 'engines' => { | ||
628 | 'espeak' => '-vzh', | ||
629 | 'gtts' => '-l zh', | ||
630 | 'piper' => 'zh_CN-huayan-medium.onnx', | ||
631 | }, | ||
632 | 'enabled' => 1, | ||
633 | }, | ||
585 | 'czech' => { | 634 | 'czech' => { |
586 | 'lang' => 'czech', | 635 | 'lang' => 'czech', |
587 | 'name' => 'Čeština (Czech)', | 636 | 'name' => 'Čeština (Czech)', |
588 | 'short' => 'cs', | 637 | 'short' => 'cs', |
589 | 'defengine' => 'espeak', | 638 | 'defengine' => 'piper', |
590 | 'engines' => { | 639 | 'engines' => { |
591 | 'espeak' => '-vcs', | 640 | 'espeak' => '-vcs', |
592 | 'gtts' => '-l cs', | 641 | 'gtts' => '-l cs', |
@@ -598,7 +647,7 @@ sub simbuilds { | |||
598 | 'lang' => 'dansk', | 647 | 'lang' => 'dansk', |
599 | 'name' => 'Dansk (Danish)', | 648 | 'name' => 'Dansk (Danish)', |
600 | 'short' => 'da', | 649 | 'short' => 'da', |
601 | 'defengine' => 'espeak', | 650 | 'defengine' => 'piper', |
602 | 'engines' => { | 651 | 'engines' => { |
603 | 'espeak' => '-vda', | 652 | 'espeak' => '-vda', |
604 | 'gtts' => '-l da', | 653 | 'gtts' => '-l da', |
@@ -610,7 +659,7 @@ sub simbuilds { | |||
610 | 'lang' => 'deutsch', | 659 | 'lang' => 'deutsch', |
611 | 'name' => 'Deutsch (German)', | 660 | 'name' => 'Deutsch (German)', |
612 | 'short' => 'de', | 661 | 'short' => 'de', |
613 | 'defengine' => 'espeak', | 662 | 'defengine' => 'piper', |
614 | 'engines' => { | 663 | 'engines' => { |
615 | 'espeak' => '-vde', | 664 | 'espeak' => '-vde', |
616 | 'gtts' => '-l de', | 665 | 'gtts' => '-l de', |
@@ -634,7 +683,7 @@ sub simbuilds { | |||
634 | 'lang' => 'english-us', | 683 | 'lang' => 'english-us', |
635 | 'name' => 'American English', | 684 | 'name' => 'American English', |
636 | 'short' => 'en-us', | 685 | 'short' => 'en-us', |
637 | 'defengine' => 'espeak', | 686 | 'defengine' => 'piper', |
638 | 'engines' => { | 687 | 'engines' => { |
639 | 'festival' => '--language english', | 688 | 'festival' => '--language english', |
640 | 'espeak' => '-ven-us -k 5', | 689 | 'espeak' => '-ven-us -k 5', |
@@ -647,7 +696,7 @@ sub simbuilds { | |||
647 | 'lang' => 'espanol', | 696 | 'lang' => 'espanol', |
648 | 'name' => 'Spanish (Peninsular)', | 697 | 'name' => 'Spanish (Peninsular)', |
649 | 'short' => 'es-es', | 698 | 'short' => 'es-es', |
650 | 'defengine' => 'espeak', | 699 | 'defengine' => 'piper', |
651 | 'engines' => { | 700 | 'engines' => { |
652 | 'festival' => '--language spanish', | 701 | 'festival' => '--language spanish', |
653 | 'espeak' => '-ves -k 5', | 702 | 'espeak' => '-ves -k 5', |
@@ -672,7 +721,7 @@ sub simbuilds { | |||
672 | 'lang' => 'francais', | 721 | 'lang' => 'francais', |
673 | 'name' => 'Français (French)', | 722 | 'name' => 'Français (French)', |
674 | 'short' => 'fr', | 723 | 'short' => 'fr', |
675 | 'defengine' => 'espeak', | 724 | 'defengine' => 'piper', |
676 | 'engines' => { | 725 | 'engines' => { |
677 | 'espeak' => '-vfr-fr', | 726 | 'espeak' => '-vfr-fr', |
678 | 'gtts' => '-l fr', | 727 | 'gtts' => '-l fr', |
@@ -684,7 +733,7 @@ sub simbuilds { | |||
684 | 'lang' => 'greek', | 733 | 'lang' => 'greek', |
685 | 'name' => 'Ελληνικά (Greek)', | 734 | 'name' => 'Ελληνικά (Greek)', |
686 | 'short' => 'el', | 735 | 'short' => 'el', |
687 | 'defengine' => 'espeak', | 736 | 'defengine' => 'piper', |
688 | 'engines' => { | 737 | 'engines' => { |
689 | 'espeak' => '-vel', | 738 | 'espeak' => '-vel', |
690 | 'gtts' => '-l el', | 739 | 'gtts' => '-l el', |
@@ -696,7 +745,7 @@ sub simbuilds { | |||
696 | 'lang' => 'italiano', | 745 | 'lang' => 'italiano', |
697 | 'name' => 'Italiano (Italian)', | 746 | 'name' => 'Italiano (Italian)', |
698 | 'short' => 'it', | 747 | 'short' => 'it', |
699 | 'defengine' => 'espeak', | 748 | 'defengine' => 'piper', |
700 | 'engines' => { | 749 | 'engines' => { |
701 | 'espeak' => '-vit', | 750 | 'espeak' => '-vit', |
702 | 'gtts' => '-l it', | 751 | 'gtts' => '-l it', |
@@ -704,11 +753,22 @@ sub simbuilds { | |||
704 | }, | 753 | }, |
705 | 'enabled' => 1, | 754 | 'enabled' => 1, |
706 | }, | 755 | }, |
756 | 'korean' => { # | ||
757 | 'lang' => 'korean', | ||
758 | 'name' => '한국어 (Korean)', | ||
759 | 'short' => 'ko', | ||
760 | 'defengine' => 'espeak', | ||
761 | 'engines' => { | ||
762 | 'espeak' => '-vko', | ||
763 | 'gtts' => '-l ko', | ||
764 | }, | ||
765 | 'enabled' => 1, | ||
766 | }, | ||
707 | 'nederlands' => { | 767 | 'nederlands' => { |
708 | 'lang' => 'nederlands', | 768 | 'lang' => 'nederlands', |
709 | 'name' => 'Nederlands (Dutch)', | 769 | 'name' => 'Nederlands (Dutch)', |
710 | 'short' => 'nl', | 770 | 'short' => 'nl', |
711 | 'defengine' => 'espeak', | 771 | 'defengine' => 'piper', |
712 | 'engines' => { | 772 | 'engines' => { |
713 | 'espeak' => '-vnl', | 773 | 'espeak' => '-vnl', |
714 | 'gtts' => '-l nl', | 774 | 'gtts' => '-l nl', |
@@ -720,7 +780,7 @@ sub simbuilds { | |||
720 | 'lang' => 'norsk', | 780 | 'lang' => 'norsk', |
721 | 'name' => 'Norsk (Norwegian)', | 781 | 'name' => 'Norsk (Norwegian)', |
722 | 'short' => 'no', | 782 | 'short' => 'no', |
723 | 'defengine' => 'espeak', | 783 | 'defengine' => 'piper', |
724 | 'engines' => { | 784 | 'engines' => { |
725 | 'espeak' => '-vno', | 785 | 'espeak' => '-vno', |
726 | 'gtts' => '-l no', | 786 | 'gtts' => '-l no', |
@@ -732,7 +792,7 @@ sub simbuilds { | |||
732 | 'lang' => 'polski', | 792 | 'lang' => 'polski', |
733 | 'name' => 'Polski (Polish)', | 793 | 'name' => 'Polski (Polish)', |
734 | 'short' => 'pl', | 794 | 'short' => 'pl', |
735 | 'defengine' => 'espeak', | 795 | 'defengine' => 'piper', |
736 | 'engines' => { | 796 | 'engines' => { |
737 | 'espeak' => '-vpl', | 797 | 'espeak' => '-vpl', |
738 | 'gtts' => '-l pl', | 798 | 'gtts' => '-l pl', |
@@ -744,7 +804,7 @@ sub simbuilds { | |||
744 | 'lang' => 'russian', | 804 | 'lang' => 'russian', |
745 | 'name' => 'Русский (Russian)', | 805 | 'name' => 'Русский (Russian)', |
746 | 'short' => 'ru', | 806 | 'short' => 'ru', |
747 | 'defengine' => 'espeak', | 807 | 'defengine' => 'piper', |
748 | 'engines' => { | 808 | 'engines' => { |
749 | 'espeak' => '-vru', | 809 | 'espeak' => '-vru', |
750 | 'gtts' => '-l ru', | 810 | 'gtts' => '-l ru', |
@@ -768,7 +828,7 @@ sub simbuilds { | |||
768 | 'lang' => 'srpski', | 828 | 'lang' => 'srpski', |
769 | 'name' => 'српски (Serbian)', | 829 | 'name' => 'српски (Serbian)', |
770 | 'short' => 'sr', | 830 | 'short' => 'sr', |
771 | 'defengine' => 'espeak', | 831 | 'defengine' => 'piper', |
772 | 'engines' => { | 832 | 'engines' => { |
773 | 'espeak' => '-vsr', | 833 | 'espeak' => '-vsr', |
774 | 'gtts' => '-l sr', | 834 | 'gtts' => '-l sr', |
@@ -780,7 +840,7 @@ sub simbuilds { | |||
780 | 'lang' => 'svenska', | 840 | 'lang' => 'svenska', |
781 | 'name' => 'Svenska (Swedish)', | 841 | 'name' => 'Svenska (Swedish)', |
782 | 'short' => 'sr', | 842 | 'short' => 'sr', |
783 | 'defengine' => 'espeak', | 843 | 'defengine' => 'piper', |
784 | 'engines' => { | 844 | 'engines' => { |
785 | 'espeak' => '-vsv', | 845 | 'espeak' => '-vsv', |
786 | 'gtts' => '-l sv', | 846 | 'gtts' => '-l sv', |
@@ -792,7 +852,7 @@ sub simbuilds { | |||
792 | 'lang' => 'turkce', | 852 | 'lang' => 'turkce', |
793 | 'name' => 'Türkçe (Turkish)', | 853 | 'name' => 'Türkçe (Turkish)', |
794 | 'short' => 'tr', | 854 | 'short' => 'tr', |
795 | 'defengine' => 'espeak', | 855 | 'defengine' => 'piper', |
796 | 'engines' => { | 856 | 'engines' => { |
797 | 'espeak' => '-vtr', | 857 | 'espeak' => '-vtr', |
798 | 'gtts' => '-l tr', | 858 | 'gtts' => '-l tr', |
@@ -802,14 +862,14 @@ sub simbuilds { | |||
802 | }, | 862 | }, |
803 | ); | 863 | ); |
804 | 864 | ||
805 | sub bylang { | 865 | sub byshortname { |
806 | return uc $voices{$a}{lang} cmp uc $voices{$b}{lang}; | 866 | return uc $voices{$a}{short} cmp uc $voices{$b}{short}; |
807 | } | 867 | } |
808 | 868 | ||
809 | sub allvoices { | 869 | sub allvoices { |
810 | my @list; | 870 | my @list; |
811 | 871 | ||
812 | for my $b (sort bylang keys %voices) { | 872 | for my $b (sort byshortname keys %voices) { |
813 | push @list, $b if (defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); | 873 | push @list, $b if (defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); |
814 | } | 874 | } |
815 | 875 | ||
@@ -820,7 +880,7 @@ sub voicesforlang($) { | |||
820 | my $l = shift @_; | 880 | my $l = shift @_; |
821 | my @list; | 881 | my @list; |
822 | 882 | ||
823 | for my $b (sort bylang keys %voices) { | 883 | for my $b (sort byshortname keys %voices) { |
824 | push @list, $b if ($voices{$b}{lang} eq $b && defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); | 884 | push @list, $b if ($voices{$b}{lang} eq $b && defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); |
825 | } | 885 | } |
826 | 886 | ||