diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/build-info.pl | 23 | ||||
-rw-r--r-- | tools/builds.pm | 119 | ||||
-rwxr-xr-x | tools/buildzip.pl | 1 | ||||
-rwxr-xr-x | tools/configure | 35 | ||||
-rwxr-xr-x | tools/genlang | 54 | ||||
-rwxr-xr-x | tools/hibyos_nativepatcher/hibyos_nativepatcher.sh | 117 | ||||
-rwxr-xr-x | tools/hibyos_nativepatcher/patch_manifest.pl | 27 | ||||
-rwxr-xr-x | tools/release/manuals.pl | 2 | ||||
-rwxr-xr-x | tools/rockboxdev.sh | 8 | ||||
-rwxr-xr-x | tools/updatelang | 17 | ||||
-rwxr-xr-x | tools/voice.pl | 40 |
11 files changed, 343 insertions, 100 deletions
diff --git a/tools/build-info.pl b/tools/build-info.pl index e4222643a1..fb89a80441 100755 --- a/tools/build-info.pl +++ b/tools/build-info.pl | |||
@@ -23,16 +23,29 @@ foreach my $b (&stablebuilds) { | |||
23 | my $ver; | 23 | my $ver; |
24 | if(exists($builds{$b}{release})) { | 24 | if(exists($builds{$b}{release})) { |
25 | $ver = $builds{$b}{release}; | 25 | $ver = $builds{$b}{release}; |
26 | } | 26 | } else { |
27 | else { | ||
28 | $ver = $publicrelease; | 27 | $ver = $publicrelease; |
29 | } | 28 | } |
30 | # print "$b=$ver,$baseurl/release/$ver/rockbox-$b-$ver.zip\n"; | 29 | if ($ver <= $publicrelease) { |
31 | print "$b=$ver\n"; | 30 | print "$b=$ver\n"; |
31 | } | ||
32 | } | 32 | } |
33 | 33 | ||
34 | print "[status]\n"; | 34 | print "[status]\n"; |
35 | 35 | ||
36 | foreach my $b (&allbuilds) { | 36 | foreach my $b (&allbuilds) { |
37 | print "$b=$builds{$b}{status}\n"; | 37 | my $ver; |
38 | my $status = $builds{$b}{status}; | ||
39 | |||
40 | if(exists($builds{$b}{release})) { | ||
41 | $ver = $builds{$b}{release}; | ||
42 | } else { | ||
43 | $ver = $publicrelease; | ||
44 | } | ||
45 | if ($ver > $publicrelease) { | ||
46 | $status=2; | ||
47 | } | ||
48 | print "$b=$status\n"; | ||
38 | } | 49 | } |
50 | |||
51 | print "\n"; | ||
diff --git a/tools/builds.pm b/tools/builds.pm index 75d34dc079..8efd22bbdf 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)', |
@@ -511,7 +524,18 @@ sub usablebuilds { | |||
511 | my @list; | 524 | my @list; |
512 | 525 | ||
513 | for my $b (sort byname keys %builds) { | 526 | for my $b (sort byname keys %builds) { |
514 | push @list, $b if ($builds{$b}{status} >= 2 || defined($builds{$b}{manualok})); | 527 | push @list, $b if ($builds{$b}{status} >= 2); |
528 | } | ||
529 | |||
530 | return @list; | ||
531 | } | ||
532 | |||
533 | sub manualbuilds { | ||
534 | my @list; | ||
535 | |||
536 | for my $b (sort byname keys %builds) { | ||
537 | push @list, $b if (($builds{$b}{status} > 2 && !defined($builds{$b}{manualok})) || | ||
538 | (defined($builds{$b}{manualok}) && ($builds{$b}{manualok} > 0))); | ||
515 | } | 539 | } |
516 | 540 | ||
517 | return @list; | 541 | return @list; |
@@ -572,21 +596,45 @@ sub simbuilds { | |||
572 | 'lang' => 'english', | 596 | 'lang' => 'english', |
573 | 'name' => 'UK English', | 597 | 'name' => 'UK English', |
574 | 'short' => 'en-gb', | 598 | 'short' => 'en-gb', |
575 | 'defengine' => 'espeak', | 599 | 'defengine' => 'piper', |
576 | 'engines' => { | 600 | 'engines' => { |
577 | 'festival' => '--language english', | 601 | 'festival' => '--language english', |
578 | 'espeak' => '-ven-gb -k 5', | 602 | 'espeak' => '-ven-gb -k 5', |
579 | 'gtts' => '-l en -t co.uk', | 603 | 'gtts' => '-l en -t co.uk', |
580 | 'piper' => 'en_GB-cori-high.onnx', | 604 | 'piper' => 'en_GB-semaine-medium.onnx', |
581 | }, | 605 | }, |
582 | 'enabled' => 1, | 606 | 'enabled' => 1, |
583 | }, | 607 | }, |
584 | # Everything else in alphabetical order | 608 | # Everything else in alphabetical order |
609 | 'bulgarian' => { | ||
610 | 'lang' => 'bulgarian', | ||
611 | 'name' => 'Български (Bulgarian)', | ||
612 | 'short' => 'bg', | ||
613 | 'defengine' => 'espeak', # XXX Switch to gtts when buildserver is updated | ||
614 | 'engines' => { | ||
615 | 'espeak' => '-vbg', | ||
616 | 'gtts' => '-l bg', | ||
617 | # No piper voice yet. | ||
618 | }, | ||
619 | 'enabled' => 1, | ||
620 | }, | ||
621 | 'chinese-simp' => { # Mandarin? | ||
622 | 'lang' => 'chinese-simp', | ||
623 | 'name' => '简体中文 (Chinese Simplified)', | ||
624 | 'short' => 'zh_cn', | ||
625 | 'defengine' => 'piper', | ||
626 | 'engines' => { | ||
627 | 'espeak' => '-vzh', | ||
628 | 'gtts' => '-l zh', | ||
629 | 'piper' => 'zh_CN-huayan-medium.onnx', | ||
630 | }, | ||
631 | 'enabled' => 1, | ||
632 | }, | ||
585 | 'czech' => { | 633 | 'czech' => { |
586 | 'lang' => 'czech', | 634 | 'lang' => 'czech', |
587 | 'name' => 'Čeština (Czech)', | 635 | 'name' => 'Čeština (Czech)', |
588 | 'short' => 'cs', | 636 | 'short' => 'cs', |
589 | 'defengine' => 'espeak', | 637 | 'defengine' => 'piper', |
590 | 'engines' => { | 638 | 'engines' => { |
591 | 'espeak' => '-vcs', | 639 | 'espeak' => '-vcs', |
592 | 'gtts' => '-l cs', | 640 | 'gtts' => '-l cs', |
@@ -598,7 +646,7 @@ sub simbuilds { | |||
598 | 'lang' => 'dansk', | 646 | 'lang' => 'dansk', |
599 | 'name' => 'Dansk (Danish)', | 647 | 'name' => 'Dansk (Danish)', |
600 | 'short' => 'da', | 648 | 'short' => 'da', |
601 | 'defengine' => 'espeak', | 649 | 'defengine' => 'piper', |
602 | 'engines' => { | 650 | 'engines' => { |
603 | 'espeak' => '-vda', | 651 | 'espeak' => '-vda', |
604 | 'gtts' => '-l da', | 652 | 'gtts' => '-l da', |
@@ -610,7 +658,7 @@ sub simbuilds { | |||
610 | 'lang' => 'deutsch', | 658 | 'lang' => 'deutsch', |
611 | 'name' => 'Deutsch (German)', | 659 | 'name' => 'Deutsch (German)', |
612 | 'short' => 'de', | 660 | 'short' => 'de', |
613 | 'defengine' => 'espeak', | 661 | 'defengine' => 'piper', |
614 | 'engines' => { | 662 | 'engines' => { |
615 | 'espeak' => '-vde', | 663 | 'espeak' => '-vde', |
616 | 'gtts' => '-l de', | 664 | 'gtts' => '-l de', |
@@ -634,7 +682,7 @@ sub simbuilds { | |||
634 | 'lang' => 'english-us', | 682 | 'lang' => 'english-us', |
635 | 'name' => 'American English', | 683 | 'name' => 'American English', |
636 | 'short' => 'en-us', | 684 | 'short' => 'en-us', |
637 | 'defengine' => 'espeak', | 685 | 'defengine' => 'piper', |
638 | 'engines' => { | 686 | 'engines' => { |
639 | 'festival' => '--language english', | 687 | 'festival' => '--language english', |
640 | 'espeak' => '-ven-us -k 5', | 688 | 'espeak' => '-ven-us -k 5', |
@@ -647,7 +695,7 @@ sub simbuilds { | |||
647 | 'lang' => 'espanol', | 695 | 'lang' => 'espanol', |
648 | 'name' => 'Spanish (Peninsular)', | 696 | 'name' => 'Spanish (Peninsular)', |
649 | 'short' => 'es-es', | 697 | 'short' => 'es-es', |
650 | 'defengine' => 'espeak', | 698 | 'defengine' => 'piper', |
651 | 'engines' => { | 699 | 'engines' => { |
652 | 'festival' => '--language spanish', | 700 | 'festival' => '--language spanish', |
653 | 'espeak' => '-ves -k 5', | 701 | 'espeak' => '-ves -k 5', |
@@ -672,7 +720,7 @@ sub simbuilds { | |||
672 | 'lang' => 'francais', | 720 | 'lang' => 'francais', |
673 | 'name' => 'Français (French)', | 721 | 'name' => 'Français (French)', |
674 | 'short' => 'fr', | 722 | 'short' => 'fr', |
675 | 'defengine' => 'espeak', | 723 | 'defengine' => 'piper', |
676 | 'engines' => { | 724 | 'engines' => { |
677 | 'espeak' => '-vfr-fr', | 725 | 'espeak' => '-vfr-fr', |
678 | 'gtts' => '-l fr', | 726 | 'gtts' => '-l fr', |
@@ -684,7 +732,7 @@ sub simbuilds { | |||
684 | 'lang' => 'greek', | 732 | 'lang' => 'greek', |
685 | 'name' => 'Ελληνικά (Greek)', | 733 | 'name' => 'Ελληνικά (Greek)', |
686 | 'short' => 'el', | 734 | 'short' => 'el', |
687 | 'defengine' => 'espeak', | 735 | 'defengine' => 'piper', |
688 | 'engines' => { | 736 | 'engines' => { |
689 | 'espeak' => '-vel', | 737 | 'espeak' => '-vel', |
690 | 'gtts' => '-l el', | 738 | 'gtts' => '-l el', |
@@ -696,7 +744,7 @@ sub simbuilds { | |||
696 | 'lang' => 'italiano', | 744 | 'lang' => 'italiano', |
697 | 'name' => 'Italiano (Italian)', | 745 | 'name' => 'Italiano (Italian)', |
698 | 'short' => 'it', | 746 | 'short' => 'it', |
699 | 'defengine' => 'espeak', | 747 | 'defengine' => 'piper', |
700 | 'engines' => { | 748 | 'engines' => { |
701 | 'espeak' => '-vit', | 749 | 'espeak' => '-vit', |
702 | 'gtts' => '-l it', | 750 | 'gtts' => '-l it', |
@@ -704,11 +752,22 @@ sub simbuilds { | |||
704 | }, | 752 | }, |
705 | 'enabled' => 1, | 753 | 'enabled' => 1, |
706 | }, | 754 | }, |
755 | 'korean' => { # | ||
756 | 'lang' => 'korean', | ||
757 | 'name' => '한국어 (Korean)', | ||
758 | 'short' => 'ko', | ||
759 | 'defengine' => 'espeak', | ||
760 | 'engines' => { | ||
761 | 'espeak' => '-vko', | ||
762 | 'gtts' => '-l ko', | ||
763 | }, | ||
764 | 'enabled' => 1, | ||
765 | }, | ||
707 | 'nederlands' => { | 766 | 'nederlands' => { |
708 | 'lang' => 'nederlands', | 767 | 'lang' => 'nederlands', |
709 | 'name' => 'Nederlands (Dutch)', | 768 | 'name' => 'Nederlands (Dutch)', |
710 | 'short' => 'nl', | 769 | 'short' => 'nl', |
711 | 'defengine' => 'espeak', | 770 | 'defengine' => 'piper', |
712 | 'engines' => { | 771 | 'engines' => { |
713 | 'espeak' => '-vnl', | 772 | 'espeak' => '-vnl', |
714 | 'gtts' => '-l nl', | 773 | 'gtts' => '-l nl', |
@@ -720,7 +779,7 @@ sub simbuilds { | |||
720 | 'lang' => 'norsk', | 779 | 'lang' => 'norsk', |
721 | 'name' => 'Norsk (Norwegian)', | 780 | 'name' => 'Norsk (Norwegian)', |
722 | 'short' => 'no', | 781 | 'short' => 'no', |
723 | 'defengine' => 'espeak', | 782 | 'defengine' => 'piper', |
724 | 'engines' => { | 783 | 'engines' => { |
725 | 'espeak' => '-vno', | 784 | 'espeak' => '-vno', |
726 | 'gtts' => '-l no', | 785 | 'gtts' => '-l no', |
@@ -732,7 +791,7 @@ sub simbuilds { | |||
732 | 'lang' => 'polski', | 791 | 'lang' => 'polski', |
733 | 'name' => 'Polski (Polish)', | 792 | 'name' => 'Polski (Polish)', |
734 | 'short' => 'pl', | 793 | 'short' => 'pl', |
735 | 'defengine' => 'espeak', | 794 | 'defengine' => 'piper', |
736 | 'engines' => { | 795 | 'engines' => { |
737 | 'espeak' => '-vpl', | 796 | 'espeak' => '-vpl', |
738 | 'gtts' => '-l pl', | 797 | 'gtts' => '-l pl', |
@@ -744,7 +803,7 @@ sub simbuilds { | |||
744 | 'lang' => 'russian', | 803 | 'lang' => 'russian', |
745 | 'name' => 'Русский (Russian)', | 804 | 'name' => 'Русский (Russian)', |
746 | 'short' => 'ru', | 805 | 'short' => 'ru', |
747 | 'defengine' => 'espeak', | 806 | 'defengine' => 'piper', |
748 | 'engines' => { | 807 | 'engines' => { |
749 | 'espeak' => '-vru', | 808 | 'espeak' => '-vru', |
750 | 'gtts' => '-l ru', | 809 | 'gtts' => '-l ru', |
@@ -768,7 +827,7 @@ sub simbuilds { | |||
768 | 'lang' => 'srpski', | 827 | 'lang' => 'srpski', |
769 | 'name' => 'српски (Serbian)', | 828 | 'name' => 'српски (Serbian)', |
770 | 'short' => 'sr', | 829 | 'short' => 'sr', |
771 | 'defengine' => 'espeak', | 830 | 'defengine' => 'piper', |
772 | 'engines' => { | 831 | 'engines' => { |
773 | 'espeak' => '-vsr', | 832 | 'espeak' => '-vsr', |
774 | 'gtts' => '-l sr', | 833 | 'gtts' => '-l sr', |
@@ -780,7 +839,7 @@ sub simbuilds { | |||
780 | 'lang' => 'svenska', | 839 | 'lang' => 'svenska', |
781 | 'name' => 'Svenska (Swedish)', | 840 | 'name' => 'Svenska (Swedish)', |
782 | 'short' => 'sr', | 841 | 'short' => 'sr', |
783 | 'defengine' => 'espeak', | 842 | 'defengine' => 'piper', |
784 | 'engines' => { | 843 | 'engines' => { |
785 | 'espeak' => '-vsv', | 844 | 'espeak' => '-vsv', |
786 | 'gtts' => '-l sv', | 845 | 'gtts' => '-l sv', |
@@ -792,7 +851,7 @@ sub simbuilds { | |||
792 | 'lang' => 'turkce', | 851 | 'lang' => 'turkce', |
793 | 'name' => 'Türkçe (Turkish)', | 852 | 'name' => 'Türkçe (Turkish)', |
794 | 'short' => 'tr', | 853 | 'short' => 'tr', |
795 | 'defengine' => 'espeak', | 854 | 'defengine' => 'piper', |
796 | 'engines' => { | 855 | 'engines' => { |
797 | 'espeak' => '-vtr', | 856 | 'espeak' => '-vtr', |
798 | 'gtts' => '-l tr', | 857 | 'gtts' => '-l tr', |
@@ -802,14 +861,14 @@ sub simbuilds { | |||
802 | }, | 861 | }, |
803 | ); | 862 | ); |
804 | 863 | ||
805 | sub bylang { | 864 | sub byshortname { |
806 | return uc $voices{$a}{lang} cmp uc $voices{$b}{lang}; | 865 | return uc $voices{$a}{short} cmp uc $voices{$b}{short}; |
807 | } | 866 | } |
808 | 867 | ||
809 | sub allvoices { | 868 | sub allvoices { |
810 | my @list; | 869 | my @list; |
811 | 870 | ||
812 | for my $b (sort bylang keys %voices) { | 871 | for my $b (sort byshortname keys %voices) { |
813 | push @list, $b if (defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); | 872 | push @list, $b if (defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); |
814 | } | 873 | } |
815 | 874 | ||
@@ -820,7 +879,7 @@ sub voicesforlang($) { | |||
820 | my $l = shift @_; | 879 | my $l = shift @_; |
821 | my @list; | 880 | my @list; |
822 | 881 | ||
823 | for my $b (sort bylang keys %voices) { | 882 | for my $b (sort byshortname keys %voices) { |
824 | push @list, $b if ($voices{$b}{lang} eq $b && defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); | 883 | push @list, $b if ($voices{$b}{lang} eq $b && defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); |
825 | } | 884 | } |
826 | 885 | ||
diff --git a/tools/buildzip.pl b/tools/buildzip.pl index fb26597290..12ca9de1d9 100755 --- a/tools/buildzip.pl +++ b/tools/buildzip.pl | |||
@@ -380,6 +380,7 @@ sub buildzip { | |||
380 | my $cmd = "$ROOT/tools/convbdf -f $ROOT/fonts/*bdf >/dev/null 2>&1"; | 380 | my $cmd = "$ROOT/tools/convbdf -f $ROOT/fonts/*bdf >/dev/null 2>&1"; |
381 | print($cmd."\n") if $verbose; | 381 | print($cmd."\n") if $verbose; |
382 | system($cmd); | 382 | system($cmd); |
383 | copy("$ROOT/fonts/COPYING", "COPYING-fonts.txt"); | ||
383 | chdir("../../"); | 384 | chdir("../../"); |
384 | 385 | ||
385 | if($fonts < 2) { | 386 | if($fonts < 2) { |
diff --git a/tools/configure b/tools/configure index 04699cb3e4..43f119ae17 100755 --- a/tools/configure +++ b/tools/configure | |||
@@ -843,7 +843,7 @@ androidcc () { | |||
843 | endian="little" | 843 | endian="little" |
844 | gcctarget="i686-linux-android-" | 844 | gcctarget="i686-linux-android-" |
845 | echo "${make_toolchain} --toolchain=x86-${gccchoice} --platform=android-android-$ANDROID_PLATFORM_VERSION --install-dir=${pwd}/android-toolchain" | 845 | echo "${make_toolchain} --toolchain=x86-${gccchoice} --platform=android-android-$ANDROID_PLATFORM_VERSION --install-dir=${pwd}/android-toolchain" |
846 | ${make_toolchain} --toolchain=x86-${gccchoice} --platform=android-android-$ANDROID_PLATFORM_VERSION --install-dir=${pwd}/android-toolchain | 846 | ${make_toolchain} --toolchain=x86-${gccchoice} --platform=android-$ANDROID_PLATFORM_VERSION --install-dir=${pwd}/android-toolchain |
847 | if [ ${?} != 0 ]; then | 847 | if [ ${?} != 0 ]; then |
848 | exit | 848 | exit |
849 | fi | 849 | fi |
@@ -1676,6 +1676,8 @@ cat <<EOF | |||
1676 | ==AIGO== 244) M3K Linux | 1676 | ==AIGO== 244) M3K Linux |
1677 | 245) Eros Q / K 246) M3K baremetal ==Shanling== | 1677 | 245) Eros Q / K 246) M3K baremetal ==Shanling== |
1678 | 247) Eros Q / K native 260) Q1 | 1678 | 247) Eros Q / K native 260) Q1 |
1679 | 248) Eros Q / K native v3 | ||
1680 | (GC9A01 LCD Controller) | ||
1679 | EOF | 1681 | EOF |
1680 | 1682 | ||
1681 | buildfor=`input`; | 1683 | buildfor=`input`; |
@@ -4190,8 +4192,39 @@ fi | |||
4190 | t_cpu="mips" | 4192 | t_cpu="mips" |
4191 | t_manufacturer="ingenic_x1000" | 4193 | t_manufacturer="ingenic_x1000" |
4192 | t_model="erosqnative" | 4194 | t_model="erosqnative" |
4195 | # player version, for bootloader usage | ||
4196 | # versions 1 and 2 both use 1 | ||
4197 | extradefines="$extradefines -DEROSQN_VER=1" | ||
4193 | ;; | 4198 | ;; |
4194 | 4199 | ||
4200 | 248|erosqnative_v3) | ||
4201 | target_id=117 | ||
4202 | modelname="erosqnative_v3" | ||
4203 | target="EROS_QN" | ||
4204 | memory=32 | ||
4205 | mipsr2elcc | ||
4206 | appextra="recorder:gui" | ||
4207 | plugins="yes" | ||
4208 | tool="$rootdir/tools/scramble -add=erosqnative " | ||
4209 | boottool="$rootdir/tools/mkspl-x1000 -type=nand -ppb=2 -bpp=2 " | ||
4210 | output="rockbox.erosq" | ||
4211 | bootoutput="bootloader.erosq" | ||
4212 | sysfontbl="16-Terminus" | ||
4213 | # toolset is the tools within the tools directory that we build for | ||
4214 | # this particular target. | ||
4215 | toolset="$x1000tools" | ||
4216 | bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" | ||
4217 | bmp2rb_native="$rootdir/tools/bmp2rb -f 4" | ||
4218 | # architecture, manufacturer and model for the target-tree build | ||
4219 | t_cpu="mips" | ||
4220 | t_manufacturer="ingenic_x1000" | ||
4221 | t_model="erosqnative" | ||
4222 | # player version, for bootloader usage | ||
4223 | # version 3 | ||
4224 | extradefines="$extradefines -DEROSQN_VER=3" | ||
4225 | ;; | ||
4226 | |||
4227 | |||
4195 | *) | 4228 | *) |
4196 | echo "Please select a supported target platform!" | 4229 | echo "Please select a supported target platform!" |
4197 | exit 7 | 4230 | exit 7 |
diff --git a/tools/genlang b/tools/genlang index 45f7bc82d9..6d0aa12528 100755 --- a/tools/genlang +++ b/tools/genlang | |||
@@ -21,14 +21,6 @@ my $LANGUAGE_FLAG_UNITS_FIRST = 0x02; | |||
21 | my $HEADER_SIZE = 4; | 21 | my $HEADER_SIZE = 4; |
22 | my $SUBHEADER_SIZE = 6; | 22 | my $SUBHEADER_SIZE = 6; |
23 | 23 | ||
24 | # A note for future users and readers: The original v1 language system allowed | ||
25 | # the build to create and use a different language than english built-in. We | ||
26 | # removed that feature from our build-system, but the build scripts still had | ||
27 | # the ability. But, starting now, this ability is no longer provided since I | ||
28 | # figured it was boring and unnecessary to write support for now since we | ||
29 | # don't use it anymore. | ||
30 | |||
31 | |||
32 | if(!$ARGV[0]) { | 24 | if(!$ARGV[0]) { |
33 | print <<MOO | 25 | print <<MOO |
34 | Usage: genlang [options] <langv2 file> | 26 | Usage: genlang [options] <langv2 file> |
@@ -46,11 +38,7 @@ Usage: genlang [options] <langv2 file> | |||
46 | 38 | ||
47 | -e=<english lang file> | 39 | -e=<english lang file> |
48 | Point out the english (original source) file, to use that as master | 40 | Point out the english (original source) file, to use that as master |
49 | language template. Used in combination with -b, -u or -s. | 41 | language template. Used in combination with -b. |
50 | |||
51 | -s | ||
52 | Sort the Update language file in the same order as the strings in the | ||
53 | English file. | ||
54 | 42 | ||
55 | -t=<target> | 43 | -t=<target> |
56 | Specify which target you want the translations/phrases for. Required when | 44 | Specify which target you want the translations/phrases for. Required when |
@@ -73,41 +61,26 @@ MOO | |||
73 | exit; | 61 | exit; |
74 | } | 62 | } |
75 | 63 | ||
76 | # How update works: | ||
77 | # | ||
78 | # 1) scan the english file, keep the whole <phrase> for each phrase. | ||
79 | # 2) read the translated file, for each end of phrase, compare: | ||
80 | # A) all source strings, if there's any change there should be a comment about | ||
81 | # it output | ||
82 | # B) the desc fields | ||
83 | # | ||
84 | # 3) output the phrase with the comments from above | ||
85 | # 4) check which phrases that the translated version didn't have, and spit out | ||
86 | # the english version of those | ||
87 | # | ||
88 | |||
89 | my $prefix = $p; | 64 | my $prefix = $p; |
90 | my $binary = $b; | 65 | my $binary = $b; |
91 | my $sortfile = $s; | ||
92 | my $binvoice = $c; | 66 | my $binvoice = $c; |
93 | 67 | ||
94 | my $english = $e; | 68 | my $english = $e; |
95 | my $voiceout = $o; | 69 | my $voiceout = $o; |
96 | 70 | ||
97 | my $check = ($binary?.5:0) + ($prefix?1:0) + ($voiceout?1:0) + ($sortfile?1:0) + ($binvoice?.5:0); | 71 | my $check = ($binary?.5:0) + ($prefix?1:0) + ($voiceout?1:0) + ($binvoice?.5:0); |
98 | 72 | ||
99 | if($check > 1) { | 73 | if($check > 1) { |
100 | print STDERR "Please use only one of -p, -o, -b, -c and -s\n"; | 74 | print STDERR "Please use only one of -p, -o, -b, and -c\n"; |
101 | exit; | 75 | exit; |
102 | } | 76 | } |
103 | if(!$check) { | 77 | if(!$check) { |
104 | print STDERR "Please use at least one of -p, -o, -c, -e and -s\n"; | 78 | print STDERR "Please use at least one of -p, -o, -c, and -e\n"; |
105 | exit; | 79 | exit; |
106 | } | 80 | } |
107 | 81 | ||
108 | 82 | if(($binary || $voiceout) && !$english) { | |
109 | if(($binary || $voiceout || $sortfile) && !$english) { | 83 | print STDERR "Please use -e too when you use -b, or -o\n"; |
110 | print STDERR "Please use -e too when you use -b, -o, -u or -s\n"; | ||
111 | exit; | 84 | exit; |
112 | } | 85 | } |
113 | 86 | ||
@@ -118,7 +91,7 @@ if($binary && !$target_id) { | |||
118 | } | 91 | } |
119 | 92 | ||
120 | my $target = $t; | 93 | my $target = $t; |
121 | if(!$target && !$sortfile) { | 94 | if(!$target) { |
122 | print STDERR "Please specify a target (with -t)!\n"; | 95 | print STDERR "Please specify a target (with -t)!\n"; |
123 | exit; | 96 | exit; |
124 | } | 97 | } |
@@ -234,9 +207,8 @@ if($english) { | |||
234 | } | 207 | } |
235 | 208 | ||
236 | sub readenglish { | 209 | sub readenglish { |
237 | # For the cases where the english file needs to be scanned/read, we do | 210 | # For the cases where the english file needs to be scanned/read, we must |
238 | # it before we read the translated file. For -b it isn't necessary, but for | 211 | # do it before we read the translated file. |
239 | # -u it is convenient. | ||
240 | 212 | ||
241 | my @idnum = ((0)); # start with a true number | 213 | my @idnum = ((0)); # start with a true number |
242 | my @vidnum = ((0x8000)); # first voice id | 214 | my @vidnum = ((0x8000)); # first voice id |
@@ -318,7 +290,7 @@ sub readenglish { | |||
318 | elsif($withindest && ($_ =~ / *([^:]+): *(.*)/)) { | 290 | elsif($withindest && ($_ =~ / *([^:]+): *(.*)/)) { |
319 | my ($name, $val)=($1, $2); | 291 | my ($name, $val)=($1, $2); |
320 | $dest=""; # in case it is left untouched for when the | 292 | $dest=""; # in case it is left untouched for when the |
321 | # model name isn't "our" | 293 | # model name isn't "ours" |
322 | dest($_, $name, $val); | 294 | dest($_, $name, $val); |
323 | 295 | ||
324 | if($dest) { | 296 | if($dest) { |
@@ -358,7 +330,6 @@ for (keys %users) { | |||
358 | 330 | ||
359 | open(LANG, "<$input") || die "Error: couldn't read language file named $input\n"; | 331 | open(LANG, "<$input") || die "Error: couldn't read language file named $input\n"; |
360 | my @phrase; | 332 | my @phrase; |
361 | my $header = 1; | ||
362 | my $langoptions = 0; | 333 | my $langoptions = 0; |
363 | 334 | ||
364 | while(<LANG>) { | 335 | while(<LANG>) { |
@@ -376,13 +347,8 @@ while(<LANG>) { | |||
376 | if ($_ =~ /LANGUAGE_UNITS_FIRST/) { | 347 | if ($_ =~ /LANGUAGE_UNITS_FIRST/) { |
377 | $langoptions |= $LANGUAGE_FLAG_UNITS_FIRST; | 348 | $langoptions |= $LANGUAGE_FLAG_UNITS_FIRST; |
378 | } | 349 | } |
379 | |||
380 | if ($header and $sortfile) { | ||
381 | print($_); | ||
382 | } | ||
383 | next; | 350 | next; |
384 | } | 351 | } |
385 | $header = 0; | ||
386 | 352 | ||
387 | my $ll = $_; | 353 | my $ll = $_; |
388 | 354 | ||
diff --git a/tools/hibyos_nativepatcher/hibyos_nativepatcher.sh b/tools/hibyos_nativepatcher/hibyos_nativepatcher.sh new file mode 100755 index 0000000000..e0a76da5c2 --- /dev/null +++ b/tools/hibyos_nativepatcher/hibyos_nativepatcher.sh | |||
@@ -0,0 +1,117 @@ | |||
1 | #!/bin/bash | ||
2 | # USAGE: ./hibyos_nativepatcher.sh <path/to/updatefile.upt> <path/to/bootloader.erosq> | ||
3 | # NOTE: THIS SCRIPT IS NOT TOLERANT OF WHITESPACE IN FILENAMES OR PATHS | ||
4 | |||
5 | if [[ "$OSTYPE" == "darwin"* ]]; then | ||
6 | echo "$OSTYPE DETECTED" | ||
7 | elif [[ "$OSTYPE" == "linux-gnu"* ]]; then | ||
8 | echo "$OSTYPE DETECTED" | ||
9 | if !(which 7z > /dev/null); then | ||
10 | echo "PLEASE INSTALL 7z (usually part of p7zip-full package)" | ||
11 | exit 1 | ||
12 | fi | ||
13 | if !(which genisoimage > /dev/null); then | ||
14 | echo "PLEASE INSTALL genisoimage" | ||
15 | exit 1 | ||
16 | fi | ||
17 | else | ||
18 | echo "SCRIPT NOT IMPLEMENTED ON $OSTYPE YET!" | ||
19 | exit 1 | ||
20 | fi | ||
21 | |||
22 | SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) | ||
23 | if !(which $SCRIPT_DIR/patch_manifest.pl > /dev/null); then | ||
24 | echo "couldn't find patch_manifest.pl!" | ||
25 | exit 1 | ||
26 | fi | ||
27 | |||
28 | updatefile=$(realpath --relative-base=$(pwd) $1) | ||
29 | updatefile_path=$(echo "$updatefile" | perl -ne "s/\/[\w\.\_\-]*$// && print") | ||
30 | updatefile_name=$(basename $updatefile) | ||
31 | updatefile_name_noext=$(echo "$updatefile_name" | perl -ne "s/\.\w*$// && print") | ||
32 | bootfile=$(realpath --relative-base=$(pwd) $2) | ||
33 | echo "This will patch $updatefile with $bootfile..." | ||
34 | |||
35 | echo "MAKE WORKING DIR..." | ||
36 | mkdir $updatefile_path/working_dir | ||
37 | working_dir=$(realpath $updatefile_path/working_dir) | ||
38 | |||
39 | # copy update.upt to update.iso | ||
40 | cp $updatefile $working_dir/$updatefile_name_noext\_cpy.iso | ||
41 | |||
42 | mkdir $working_dir/image_contents | ||
43 | |||
44 | # attach/mount iso | ||
45 | echo "mount/extract/unmount original iso..." | ||
46 | if [[ "$OSTYPE" == "darwin"* ]]; then | ||
47 | # macos | ||
48 | hdiutil attach $working_dir/$updatefile_name_noext\_cpy.iso -mountpoint $working_dir/contentsiso | ||
49 | |||
50 | # copy out iso contents | ||
51 | cp $working_dir/contentsiso/* $working_dir/image_contents | ||
52 | |||
53 | # unmount iso | ||
54 | hdiutil detach $working_dir/contentsiso | ||
55 | elif [[ "$OSTYPE" == "linux-gnu"* ]]; then | ||
56 | # linux-gnu | ||
57 | 7z -o$working_dir/image_contents x $working_dir/$updatefile_name_noext\_cpy.iso | ||
58 | fi | ||
59 | |||
60 | chmod 777 $working_dir/image_contents/* | ||
61 | |||
62 | # extract spl, bootloader | ||
63 | echo "extract bootloader..." | ||
64 | mkdir $working_dir/bootloader | ||
65 | |||
66 | if [[ "$OSTYPE" == "darwin"* ]]; then | ||
67 | # macos | ||
68 | tar -xvf $bootfile --cd $working_dir/bootloader | ||
69 | elif [[ "$OSTYPE" == "linux-gnu"* ]]; then | ||
70 | # linux-gnu | ||
71 | tar -xvf $bootfile -C $working_dir/bootloader | ||
72 | fi | ||
73 | |||
74 | bootver=$(cat $working_dir/bootloader/bootloader-info.txt) | ||
75 | if [ -z "$bootver" ]; then | ||
76 | echo "COULDN'T FIND BOOTLOADER-INFO!" | ||
77 | echo "cleaning up..." | ||
78 | rm -rf $working_dir | ||
79 | exit 1 | ||
80 | fi | ||
81 | echo "FOUND VERSION $bootver" | ||
82 | |||
83 | # patch uboot.bin | ||
84 | echo "PATCH!" | ||
85 | dd if=$working_dir/bootloader/spl.erosq of=$working_dir/image_contents/uboot.bin obs=1 seek=0 conv=notrunc | ||
86 | dd if=$working_dir/bootloader/bootloader.ucl of=$working_dir/image_contents/uboot.bin obs=1 seek=26624 conv=notrunc | ||
87 | |||
88 | # modify update.txt | ||
89 | md5=($(md5sum $working_dir/image_contents/uboot.bin)) | ||
90 | if [ -z "$md5" ]; then | ||
91 | echo "COULDN'T MD5SUM UBOOT.BIN!" | ||
92 | echo "cleaning up..." | ||
93 | rm -rf $working_dir | ||
94 | exit 1 | ||
95 | fi | ||
96 | echo "add to update manifest with md5sum $md5" | ||
97 | $SCRIPT_DIR/patch_manifest.pl $md5 $working_dir/image_contents/update.txt | ||
98 | |||
99 | # modify version.txt? | ||
100 | |||
101 | # create iso | ||
102 | echo "make new iso..." | ||
103 | if [[ "$OSTYPE" == "darwin"* ]]; then | ||
104 | # macos | ||
105 | hdiutil makehybrid -iso -joliet -o $working_dir/$updatefile_name_noext\_patched_$bootver.iso $working_dir/image_contents/ | ||
106 | elif [[ "$OSTYPE" == "linux-gnu"* ]]; then | ||
107 | # linux-gnu | ||
108 | genisoimage -o $working_dir/$updatefile_name_noext\_patched_$bootver.iso $working_dir/image_contents/ | ||
109 | fi | ||
110 | |||
111 | # rename to something.upt and put in original directory | ||
112 | echo "final output file $updatefile_name_noext\_patched_$bootver.upt" | ||
113 | mv $working_dir/$updatefile_name_noext\_patched_$bootver.iso $updatefile_path/$updatefile_name_noext\_patched_$bootver.upt | ||
114 | |||
115 | # clean up | ||
116 | echo "cleaning up..." | ||
117 | rm -rf $working_dir | ||
diff --git a/tools/hibyos_nativepatcher/patch_manifest.pl b/tools/hibyos_nativepatcher/patch_manifest.pl new file mode 100755 index 0000000000..82c6378c65 --- /dev/null +++ b/tools/hibyos_nativepatcher/patch_manifest.pl | |||
@@ -0,0 +1,27 @@ | |||
1 | #!/usr/bin/perl | ||
2 | # add bootloader info to update manifest | ||
3 | # usage: ./patch_manifest.pl <md5sum> <path/to/update.txt> | ||
4 | |||
5 | my $md5 = $ARGV[0]; | ||
6 | my $updatefile = $ARGV[1]; | ||
7 | my $bootloader_manif = | ||
8 | "bootloader={ | ||
9 | name=uboot | ||
10 | file_path=autoupdate/uboot.bin | ||
11 | md5=$md5 | ||
12 | }\n"; | ||
13 | |||
14 | # read in existing manifest | ||
15 | open(FH, '<', "$updatefile"); | ||
16 | read(FH, my $manifest, -s FH); | ||
17 | close(FH); | ||
18 | |||
19 | # delete existing bootloader entry if exists | ||
20 | $manifest =~ s/bootloader\s*=\s*{[^}]*}//; | ||
21 | |||
22 | # add our own bootloader entry | ||
23 | $manifest = "$bootloader_manif$manifest"; | ||
24 | |||
25 | open(FH, '>', "$updatefile"); | ||
26 | print FH $manifest; | ||
27 | close(FH); | ||
diff --git a/tools/release/manuals.pl b/tools/release/manuals.pl index d85ed48ff2..3493aac86d 100755 --- a/tools/release/manuals.pl +++ b/tools/release/manuals.pl | |||
@@ -74,6 +74,6 @@ sub buildit { | |||
74 | 74 | ||
75 | `mkdir -p $outdir`; | 75 | `mkdir -p $outdir`; |
76 | 76 | ||
77 | for my $b (&usablebuilds) { | 77 | for my $b (&manualbuilds) { |
78 | runone($b); | 78 | runone($b); |
79 | } | 79 | } |
diff --git a/tools/rockboxdev.sh b/tools/rockboxdev.sh index 63b1a1f5a1..f8e9ab2140 100755 --- a/tools/rockboxdev.sh +++ b/tools/rockboxdev.sh | |||
@@ -378,8 +378,14 @@ buildtool() { | |||
378 | $config_opt | 378 | $config_opt |
379 | elif [ "$config_opt" != "NO_CONFIGURE" ]; then | 379 | elif [ "$config_opt" != "NO_CONFIGURE" ]; then |
380 | echo "ROCKBOXDEV: $toolname/configure" | 380 | echo "ROCKBOXDEV: $toolname/configure" |
381 | cflags='-U_FORTIFY_SOURCE -fgnu89-inline -O2' | ||
382 | if [ "$tool" == "glib" ]; then | ||
383 | run_cmd "$logfile" sed -i -e 's/m4_copy/m4_copy_force/g' "$cfg_dir/m4macros/glib-gettext.m4" | ||
384 | run_cmd "$logfile" autoreconf -fiv "$cfg_dir" | ||
385 | cflags="$cflags -Wno-format-nonliteral -Wno-format-overflow" | ||
386 | fi | ||
381 | # NOTE glibc requires to be compiled with optimization | 387 | # NOTE glibc requires to be compiled with optimization |
382 | CFLAGS='-U_FORTIFY_SOURCE -fgnu89-inline -O2' CXXFLAGS="$CXXFLAGS" run_cmd "$logfile" \ | 388 | CFLAGS="$cflags" CXXFLAGS="$CXXFLAGS" run_cmd "$logfile" \ |
383 | "$cfg_dir/configure" "--prefix=$prefix" \ | 389 | "$cfg_dir/configure" "--prefix=$prefix" \ |
384 | --disable-docs $config_opt | 390 | --disable-docs $config_opt |
385 | fi | 391 | fi |
diff --git a/tools/updatelang b/tools/updatelang index a05011e645..28f259bdbb 100755 --- a/tools/updatelang +++ b/tools/updatelang | |||
@@ -158,7 +158,7 @@ sub reduceformat($) { | |||
158 | ################## | 158 | ################## |
159 | 159 | ||
160 | if($#ARGV != 2) { | 160 | if($#ARGV != 2) { |
161 | print "Usage: updatelang <english.lang> <otherlang> <outfile|->\n"; | 161 | print "Usage: [ENGLISHORDER=1] updatelang <english.lang> <otherlang> <outfile|->\n"; |
162 | exit; | 162 | exit; |
163 | } | 163 | } |
164 | 164 | ||
@@ -476,9 +476,9 @@ foreach my $id (@langorder) { | |||
476 | } | 476 | } |
477 | my $sane = $lang{$id}{'voice'}{$tgt}; | 477 | my $sane = $lang{$id}{'voice'}{$tgt}; |
478 | $sane =~ s/^~?(.*)/$1/; # Strip off leading ~ if it's there as it's not a legal character otherwise | 478 | $sane =~ s/^~?(.*)/$1/; # Strip off leading ~ if it's there as it's not a legal character otherwise |
479 | if ($sane =~ tr/%"~//) { | 479 | if ($sane =~ tr/%"~://) { |
480 | # If it has suspicious characters that are not normally voiced.. | 480 | # Suspicious characters that are not typically voiced.. |
481 | $lang{$id}{'notes'} .= "### The <voice> section for '$id:$tgt' has some suspicious characters (eg '%' or '~'), please double-check!\n"; | 481 | $lang{$id}{'notes'} .= "### The <voice> section for '$id:$tgt' has some suspicious characters (eg '%' or '~' or ':'), please correct!\n"; |
482 | # print "#!! '$id:$tgt' suspicious characters\n"; | 482 | # print "#!! '$id:$tgt' suspicious characters\n"; |
483 | } | 483 | } |
484 | if ($lang{$id}{'voice'}{$tgt} =~ /\.\.\./) { | 484 | if ($lang{$id}{'voice'}{$tgt} =~ /\.\.\./) { |
@@ -502,7 +502,14 @@ foreach (@langheader) { | |||
502 | print $fh $_; | 502 | print $fh $_; |
503 | } | 503 | } |
504 | 504 | ||
505 | my @finalorder = @langorder; # TODO make configurable vs @englishorder | 505 | my @finalorder; |
506 | |||
507 | if ($ENV{'ENGLISHORDER'}) { | ||
508 | @finalorder = @englishorder; | ||
509 | } else { | ||
510 | @finalorder = @langorder; | ||
511 | } | ||
512 | |||
506 | foreach my $id (@finalorder) { | 513 | foreach my $id (@finalorder) { |
507 | if (!defined($english{$id})) { | 514 | if (!defined($english{$id})) { |
508 | next; | 515 | next; |
diff --git a/tools/voice.pl b/tools/voice.pl index 1c547c7d96..1180565b64 100755 --- a/tools/voice.pl +++ b/tools/voice.pl | |||
@@ -8,6 +8,7 @@ | |||
8 | # $Id$ | 8 | # $Id$ |
9 | # | 9 | # |
10 | # Copyright (C) 2007 Jonas Häggqvist | 10 | # Copyright (C) 2007 Jonas Häggqvist |
11 | # Copyright (C) 2020 Solomon Peachy | ||
11 | # | 12 | # |
12 | # All files in this archive are subject to the GNU General Public License. | 13 | # All files in this archive are subject to the GNU General Public License. |
13 | # See the file COPYING in the source tree root for full license agreement. | 14 | # See the file COPYING in the source tree root for full license agreement. |
@@ -87,6 +88,8 @@ my %festival_lang_map = ( | |||
87 | 88 | ||
88 | my %gtts_lang_map = ( | 89 | my %gtts_lang_map = ( |
89 | 'english' => '-l en -t co.uk', # Always first, it's the golden master | 90 | 'english' => '-l en -t co.uk', # Always first, it's the golden master |
91 | 'bulgarian' => '-l bg', | ||
92 | 'chinese-simp' => '-l zh', | ||
90 | 'czech' => '-l cs', | 93 | 'czech' => '-l cs', |
91 | 'dansk' => '-l da', | 94 | 'dansk' => '-l da', |
92 | 'deutsch' => '-l de', | 95 | 'deutsch' => '-l de', |
@@ -95,8 +98,9 @@ my %gtts_lang_map = ( | |||
95 | 'espanol' => '-l es', | 98 | 'espanol' => '-l es', |
96 | 'francais' => '-l fr', | 99 | 'francais' => '-l fr', |
97 | 'greek' => '-l el', | 100 | 'greek' => '-l el', |
98 | 'magyar' => '-l hu', | ||
99 | 'italiano' => '-l it', | 101 | 'italiano' => '-l it', |
102 | 'korean' => '-l ko', | ||
103 | 'magyar' => '-l hu', | ||
100 | 'nederlands' => '-l nl', | 104 | 'nederlands' => '-l nl', |
101 | 'norsk' => '-l no', | 105 | 'norsk' => '-l no', |
102 | 'polski' => '-l pl', | 106 | 'polski' => '-l pl', |
@@ -109,6 +113,8 @@ my %gtts_lang_map = ( | |||
109 | 113 | ||
110 | my %espeak_lang_map = ( | 114 | my %espeak_lang_map = ( |
111 | 'english' => '-ven-gb -k 5', # Always first, it's the golden master | 115 | 'english' => '-ven-gb -k 5', # Always first, it's the golden master |
116 | 'bulgarian' => '-vbg', | ||
117 | 'chinese-simp' => '-vzh', | ||
112 | 'czech' => '-vcs', | 118 | 'czech' => '-vcs', |
113 | 'dansk' => '-vda', | 119 | 'dansk' => '-vda', |
114 | 'deutsch' => '-vde', | 120 | 'deutsch' => '-vde', |
@@ -117,9 +123,10 @@ my %espeak_lang_map = ( | |||
117 | 'espanol' => '-ves', | 123 | 'espanol' => '-ves', |
118 | 'francais' => '-vfr-fr', | 124 | 'francais' => '-vfr-fr', |
119 | 'greek' => '-vel', | 125 | 'greek' => '-vel', |
120 | 'magyar' => '-vhu', | ||
121 | 'italiano' => '-vit', | 126 | 'italiano' => '-vit', |
122 | 'japanese' => '-vja', | 127 | 'japanese' => '-vja', |
128 | 'korean' => '-vko', | ||
129 | 'magyar' => '-vhu', | ||
123 | 'nederlands' => '-vnl', | 130 | 'nederlands' => '-vnl', |
124 | 'norsk' => '-vno', | 131 | 'norsk' => '-vno', |
125 | 'polski' => '-vpl', | 132 | 'polski' => '-vpl', |
@@ -131,7 +138,9 @@ my %espeak_lang_map = ( | |||
131 | ); | 138 | ); |
132 | 139 | ||
133 | my %piper_lang_map = ( | 140 | my %piper_lang_map = ( |
134 | 'english' => 'en_GB-cori-high.onnx', # Always first, it's the golden master | 141 | 'english' => 'en_GB-semaine-medium.onnx', # Always first, it's the golden master |
142 | # 'bulgarian' => '-vbg', | ||
143 | 'chinese-simp' => 'zh_CN-huayan-medium.onnx', | ||
135 | 'czech' => 'cs_CZ-jirka-medium.onnx', | 144 | 'czech' => 'cs_CZ-jirka-medium.onnx', |
136 | 'dansk' => 'da_DK-talesyntese-medium.onnx', | 145 | 'dansk' => 'da_DK-talesyntese-medium.onnx', |
137 | 'deutsch' => 'de_DE-thorsten-high.onnx', | 146 | 'deutsch' => 'de_DE-thorsten-high.onnx', |
@@ -140,9 +149,10 @@ my %piper_lang_map = ( | |||
140 | 'espanol' => 'es_ES-sharvard-medium.onnx', | 149 | 'espanol' => 'es_ES-sharvard-medium.onnx', |
141 | 'francais' => 'fr_FR-siwis-medium.onnx', | 150 | 'francais' => 'fr_FR-siwis-medium.onnx', |
142 | 'greek' => 'el_GR-rapunzelina-low.onnx', | 151 | 'greek' => 'el_GR-rapunzelina-low.onnx', |
143 | 'magyar' => 'hu_HU-anna-medium.onnx', | ||
144 | 'italiano' => 'it_IT-paola-medium.onnx', | 152 | 'italiano' => 'it_IT-paola-medium.onnx', |
145 | # 'japanese' => '-vja', | 153 | # 'japanese' => '-vja', |
154 | # 'korean' => '-vko', | ||
155 | 'magyar' => 'hu_HU-anna-medium.onnx', | ||
146 | 'nederlands' => 'nl_NL-mls-medium.onnx', | 156 | 'nederlands' => 'nl_NL-mls-medium.onnx', |
147 | 'norsk' => 'no_NO-talesyntese-medium.onnx', | 157 | 'norsk' => 'no_NO-talesyntese-medium.onnx', |
148 | 'polski' => 'pl_PL-gosia-medium.onnx', | 158 | 'polski' => 'pl_PL-gosia-medium.onnx', |
@@ -153,7 +163,7 @@ my %piper_lang_map = ( | |||
153 | 'turkce' => 'tr_TR-fettah-medium.onnx', | 163 | 'turkce' => 'tr_TR-fettah-medium.onnx', |
154 | ); | 164 | ); |
155 | 165 | ||
156 | my $trim_thresh = 500; # Trim silence if over this, in ms | 166 | my $trim_thresh = 250; # Trim silence if over this, in ms |
157 | my $force = 0; # Don't regenerate files already present | 167 | my $force = 0; # Don't regenerate files already present |
158 | 168 | ||
159 | # Initialize TTS engine. May return an object or value which will be passed | 169 | # Initialize TTS engine. May return an object or value which will be passed |
@@ -476,7 +486,7 @@ sub generateclips { | |||
476 | # If we have a pool of snippets, see if the string exists there first | 486 | # If we have a pool of snippets, see if the string exists there first |
477 | if (defined($ENV{'POOL'})) { | 487 | if (defined($ENV{'POOL'})) { |
478 | $pool_file = sprintf("%s/%s-%s.enc", $ENV{'POOL'}, | 488 | $pool_file = sprintf("%s/%s-%s.enc", $ENV{'POOL'}, |
479 | md5_hex(Encode::encode_utf8("$voice ". $tts_object->{"name"}." $tts_engine_opts $encoder_opts")), | 489 | md5_hex(Encode::encode_utf8("$voice ". $tts_object->{"name"}." $tts_engine_opts ".$tts_object->{"ttsoptions"}." $encoder_opts")), |
480 | $language); | 490 | $language); |
481 | if (-f $pool_file) { | 491 | if (-f $pool_file) { |
482 | printf("Re-using %s (%s) from pool\n", $id, $voice) if $verbose; | 492 | printf("Re-using %s (%s) from pool\n", $id, $voice) if $verbose; |
@@ -585,17 +595,21 @@ sub gentalkclips { | |||
585 | print("."); | 595 | print("."); |
586 | } | 596 | } |
587 | 597 | ||
588 | # Convert to a complete path | ||
589 | my $path = sprintf("%s/%s", $dir, $file); | ||
590 | |||
591 | $voice = $file; | ||
592 | $wav = sprintf("%s.talk.wav", $path); | ||
593 | |||
594 | # Ignore dot-dirs and talk files | 598 | # Ignore dot-dirs and talk files |
595 | if ($file eq '.' || $file eq '..' || $file =~ /\.talk$/) { | 599 | if ($file eq '.' || $file eq '..' || $file =~ /\.talk$/) { |
596 | next; | 600 | next; |
597 | } | 601 | } |
598 | 602 | ||
603 | $voice = $file; | ||
604 | |||
605 | # Convert some symbols to spaces | ||
606 | $voice =~ tr/_-/ /; | ||
607 | |||
608 | # Convert to a complete path | ||
609 | my $path = sprintf("%s/%s", $dir, $file); | ||
610 | |||
611 | $wav = sprintf("%s.talk.wav", $path); | ||
612 | |||
599 | if ( -d $path) { # Element is a dir | 613 | if ( -d $path) { # Element is a dir |
600 | $enc = sprintf("%s/_dirname.talk", $path); | 614 | $enc = sprintf("%s/_dirname.talk", $path); |
601 | if (! -e "$path/talkclips.ignore") { # Skip directories containing "talkclips.ignore" | 615 | if (! -e "$path/talkclips.ignore") { # Skip directories containing "talkclips.ignore" |
@@ -670,7 +684,7 @@ if ($V == 1) { | |||
670 | 684 | ||
671 | printf("Generating voice\n Target: %s\n Language: %s\n Encoder (options): %s (%s)\n TTS Engine (options): %s (%s)\n Pool directory: %s\n", | 685 | printf("Generating voice\n Target: %s\n Language: %s\n Encoder (options): %s (%s)\n TTS Engine (options): %s (%s)\n Pool directory: %s\n", |
672 | defined($t) ? $t : "unknown", | 686 | defined($t) ? $t : "unknown", |
673 | $l, $e, $E, $s, $S, defined($ENV{'POOL'}) ? $ENV{'POOL'} : "<none>"); | 687 | $l, $e, $E, $s, "$S $tts_object->{ttsoptions}", defined($ENV{'POOL'}) ? $ENV{'POOL'} : "<none>"); |
674 | generateclips($l, $t, $e, $E, $tts_object, $S, $f); | 688 | generateclips($l, $t, $e, $E, $tts_object, $S, $f); |
675 | shutdown_tts($tts_object); | 689 | shutdown_tts($tts_object); |
676 | createvoice($l, $i, $f); | 690 | createvoice($l, $i, $f); |