summaryrefslogtreecommitdiff
path: root/tools/builds.pm
diff options
context:
space:
mode:
Diffstat (limited to 'tools/builds.pm')
-rw-r--r--tools/builds.pm132
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
534sub 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
805sub bylang { 865sub 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
809sub allvoices { 869sub 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