diff --git a/pi/install/pi_profile.sh b/pi/install/pi_profile.sh index 526d8d53..599f114c 100644 --- a/pi/install/pi_profile.sh +++ b/pi/install/pi_profile.sh @@ -113,8 +113,20 @@ install_google_tts_assets() { local voice_dir="${asset_dir}/en-us-x-multi-r30" local dist_url="https://storage.googleapis.com/chromeos-localmirror/distfiles/googletts-26.5.tar.xz" local tmp_dir - local lib_member="" - local member + local lib_member + + case "$(uname -m)" in + aarch64|arm64) + lib_member="libchrometts_arm64.so" + ;; + armv7l|armhf) + lib_member="libchrometts_armv7.so" + ;; + *) + log "WARNING: unsupported Chrome TTS architecture $(uname -m); skipping Google TTS assets" + return + ;; + esac if [[ -f "${asset_dir}/libchrometts.so" && -f "${voice_dir}/pipeline.pb" ]]; then log "Google Chrome TTS assets already installed; skipping download" @@ -123,55 +135,8 @@ install_google_tts_assets() { tmp_dir="$(mktemp -d)" log "Downloading Google Chrome TTS assets..." - if ! curl -L -o "${tmp_dir}/googletts-26.5.tar.xz" "$dist_url"; then - rm -rf "$tmp_dir" - log "WARNING: failed to download Google Chrome TTS assets; chromegtts will be unavailable" - return - fi - - # The ChromeOS tarball has had architecture-specific library names. The Pi - # profile historically hard-coded ARM names; the laptop profile should be able - # to use the same installer when a matching x86_64 library exists, and should - # fail soft when it does not. - local -a candidate_libs=() - case "$(uname -m)" in - aarch64|arm64) - candidate_libs=(libchrometts_arm64.so libchrometts.so) - ;; - armv7l|armhf) - candidate_libs=(libchrometts_armv7.so libchrometts.so) - ;; - x86_64|amd64) - candidate_libs=(libchrometts_x86_64.so libchrometts_amd64.so libchrometts_x64.so libchrometts.so) - ;; - i386|i686) - candidate_libs=(libchrometts_x86.so libchrometts_i386.so libchrometts.so) - ;; - *) - log "WARNING: unsupported Chrome TTS architecture $(uname -m); skipping Google TTS assets" - rm -rf "$tmp_dir" - return - ;; - esac - - for member in "${candidate_libs[@]}"; do - if tar -tf "${tmp_dir}/googletts-26.5.tar.xz" "$member" >/dev/null 2>&1; then - lib_member="$member" - break - fi - done - - if [[ -z "$lib_member" ]]; then - log "WARNING: no libchrometts library matching $(uname -m) found in Google TTS archive; chromegtts will be unavailable" - rm -rf "$tmp_dir" - return - fi - - if ! tar -xf "${tmp_dir}/googletts-26.5.tar.xz" -C "$tmp_dir" en-us-x-multi.zvoice "$lib_member"; then - rm -rf "$tmp_dir" - log "WARNING: failed to unpack Google Chrome TTS assets; chromegtts will be unavailable" - return - fi + curl -L -o "${tmp_dir}/googletts-26.5.tar.xz" "$dist_url" + tar -xf "${tmp_dir}/googletts-26.5.tar.xz" -C "$tmp_dir" en-us-x-multi.zvoice "$lib_member" install -d -o root -g root -m 0755 "$asset_dir" install -o root -g root -m 0644 "${tmp_dir}/${lib_member}" "${asset_dir}/libchrometts.so" @@ -182,7 +147,7 @@ install_google_tts_assets() { find "$asset_dir" -type d -exec chmod 0755 {} + find "$asset_dir" -type f -exec chmod 0644 {} + rm -rf "$tmp_dir" - log "Installed Google Chrome TTS assets to $asset_dir using $lib_member" + log "Installed Google Chrome TTS assets to $asset_dir" } install_pi_profile() {