A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
1#!/usr/bin/perl -w
2require "./tools/builds.pm";
3
4my $verbose;
5if($ARGV[0] eq "-v") {
6 $verbose =1;
7 shift @ARGV;
8}
9
10my $tag = $ARGV[0];
11my $version = $ARGV[1];
12
13my $outdir = "output/voices";
14
15# made once for all targets
16sub runone {
17 my ($target, $name, $lang, $engine, $voice, $engine_opts)=@_;
18 my $a;
19
20 print "*** LANGUAGE: $lang\n";
21
22 print "Build in buildv-$target-$lang\n" if($verbose);
23
24 mkdir "buildv-$target-$lang";
25 chdir "buildv-$target-$lang";
26
27 # build the voice(s)
28 $a = buildit($target, $lang, $engine, $voice, $engine_opts);
29
30 my $o="$lang.voice";
31 if (-f $o) {
32 my $newo="../$outdir/$target/voice-$target-$version-$name.zip";
33 system("mkdir -p ../$outdir/$target");
34 system("mkdir -p .rockbox/langs");
35 system("mkdir -p output/$target");
36 system("mkdir -p .rockbox/langs");
37 system("cp $o .rockbox/langs");
38 system("cp $lang.lng.talk .rockbox/langs");
39 system("cp InvalidVoice_$lang.talk .rockbox/langs");
40 system("zip -q -r $newo .rockbox");
41 system("rm -rf .rockbox");
42 `chmod a+r $newo`;
43 print "moved $o to $newo\n" if($verbose);
44 }
45
46 chdir "..";
47
48 print "remove all contents in buildv-$target-$lang\n" if($verbose);
49 system("rm -rf buildv-$target-$lang");
50
51 return $a;
52};
53
54sub buildit {
55 my ($target, $lang, $engine, $voice, $engine_opts)=@_;
56
57 `rm -rf * >/dev/null 2>&1`;
58
59 my $c = "../tools/configure --no-ccache --type=av --target=$target --ram=-1 --language=$lang --tts=$engine --voice=$voice --ttsopts='$engine_opts'";
60
61 print "C: $c\n" if($verbose);
62 system($c);
63
64 print "Run 'make voice'\n" if($verbose);
65 `make voice`;
66}
67
68`git checkout $tag`;
69
70# run make in tools first to make sure they're up-to-date
71`(cd tools && make ) >/dev/null 2>&1`;
72
73if (!defined($ENV{'POOL'})) {
74 my $home=$ENV{'HOME'};
75 my $pool="$home/tmp/rockbox-voices-$version/voice-pool";
76 `mkdir -p $pool`;
77 $ENV{'POOL'}="$pool";
78}
79# `rm -f $pool/*`;
80
81`mkdir -p $outdir`;
82
83for my $b (&stablebuilds) {
84 next if ($builds{$b}{voice}); # no variants
85
86 for my $v (&allvoices) {
87 my %voice = %{$voices{$v}};
88
89 my $engine = $voice{"defengine"};
90 my ($opts, $vf);
91 if ($engine eq 'piper') {
92 $vf = $voice{"engines"}->{$engine};
93 $opts = "";
94 } else {
95 $vf = -1;
96 $opts = $voice{"engines"}->{$engine};
97 }
98 # print " runone $b $v ($voice{lang} via $engine)\n";
99 runone($b, $v, $voice{"lang"}, $engine, $vf, $opts);
100 }
101}