From d772cd39ea6550bf7b975f122ca39e1b758179e0 Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 29 Nov 2017 10:17:28 +0100 Subject: [PATCH] Allow RC builds --- tools/rc22/build-rc.sh | 61 ++++++++++++++++++ tools/rc22/build-sdcard.sh | 53 ++++++++++++++++ tools/rc22/tts.py | 126 +++++++++++++++++++++++++++++++++++++ tools/rc22/tts_common.py | 14 +++++ 4 files changed, 254 insertions(+) create mode 100755 tools/rc22/build-rc.sh create mode 100644 tools/rc22/build-sdcard.sh create mode 100755 tools/rc22/tts.py create mode 100644 tools/rc22/tts_common.py diff --git a/tools/rc22/build-rc.sh b/tools/rc22/build-rc.sh new file mode 100755 index 000000000..a3a6d083b --- /dev/null +++ b/tools/rc22/build-rc.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -e + +branch=2.2 +docker=rc22 +workdir=/home/opentx/rc22 +output=/var/www/html/2.2 +version=2.2.0 + +cd ${workdir} + +# Create on-demand build environment +cp code/radio/util/Dockerfile . +docker build -t new-${docker} . +docker rmi -f ${docker} || true +docker tag new-${docker} ${docker} +docker rmi -f new-${docker} + +# Call sdcard generation +code/tools/rc22/build-sdcard.sh + +# Build Linux companion +docker run -dit --name companion -v /home/opentx/${docker}:/opentx ${docker} +docker exec companion sh -c "mkdir -p build && cd build && cmake /opentx/code && cp radio/src/stamp.h /opentx/binaries/stamp-opentx.txt" +docker exec companion rm -rf build +if [ ! -f ${output}/companion/linux/companion22_${version}${suffix}_amd64.deb ]; then + docker exec companion /opentx/code/tools/build-companion-release.sh /opentx/code /opentx/binaries/ + docker exec companion sh -c "cp /build/radio/src/lua/*.txt /opentx/binaries" + cp -f binaries/*.deb ${output}/companion/linux/companion22_${version}_amd64.deb + cp -f binaries/lua_fields_*.txt ${output}/firmware +fi +docker stop companion +docker rm companion + +# Request companion compilation on Windows +if [ ! -f ${output}/companion/windows/companion-windows-${version}${suffix}.exe ]; then + cd ${output}/companion/windows + wget -qO- http://winbox.open-tx.org/companion-builds/compile22.php?branch=${branch} + wget -O companion-windows-${version}.exe http://winbox.open-tx.org/companion-builds/companion-windows-${version}.exe + chmod -f g+w companion-windows-${version}.exe +fi + +# Request companion compilation on Mac OS X +if [ ! -f ${output}/companion/macosx/opentx-companion-${version}${suffix}.dmg ]; then + cd ${output}/companion/macosx + wget -qO- http://opentx.blinkt.de:8080/~opentx/build-opentx.py?branch=${branch} + wget -O opentx-companion-${version}.dmg http://opentx.blinkt.de:8080/~opentx/builds/opentx-companion-${version}.dmg + chmod -f g+w opentx-companion-${version}.dmg +fi + +# Update stamps +cp -f $workdir/binaries/stamp-opentx.txt ${output}/firmware +echo "#define VERSION "'"2.2.0"' > ${output}/companion/companion-windows.stamp +cp -f ${output}/companion/companion-windows.stamp ${output}/companion/companion-macosx.stamp +cp -f ${output}/companion/companion-windows.stamp ${output}/companion/companion-linux.stamp + + +# Clean binaries It will be hosting built on demand firmware +rm -rf $workdir/binaries/* +rm -rf $workdir/binaries/.lock diff --git a/tools/rc22/build-sdcard.sh b/tools/rc22/build-sdcard.sh new file mode 100644 index 000000000..3d1a8e34e --- /dev/null +++ b/tools/rc22/build-sdcard.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +set -e + +branch=2.2 +workdir=/home/opentx/rc22 +output=/var/www/html/2.2 + +# Handle opentx.sdcard.version +sdcard_version="2.2V"$(grep 'set(SDCARD_REVISION' ${workdir}/code/CMakeLists.txt | grep -o '".*"' | sed 's/"//g') +echo ${sdcard_version} > ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version +echo ${sdcard_version} > ${workdir}/code/radio/sdcard/taranis-x9/opentx.sdcard.version +echo ${sdcard_version} > ${workdir}/code/radio/sdcard/taranis-x7/opentx.sdcard.version + +if cmp --silent ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version ${workdir}/opentx.sdcard.version +then + exit +else + cp -r ${workdir}/code/radio/sdcard/horus/opentx.sdcard.version ${workdir} + cd ${workdir} + + # Copy git sdcard data + rm -Rf ${workdir}/sdcard + cp -r ${workdir}/code/radio/sdcard . + + # Get images for Horus + mkdir -p ${workdir}/sdcard/horus/IMAGES + cp /home/opentx/horus-bitmaps/* ${workdir}/sdcard/horus/IMAGES/ + + # Get images for Taranis x9 + mkdir -p ${workdir}/sdcard/taranis-x9/IMAGES + cp /home/opentx/x9-bitmaps/* ${workdir}/sdcard/taranis-x9/IMAGES/ + + # Request sound pack generation + python3 -B ${workdir}/code/tools/rc22/tts.py en csv files + python3 -B ${workdir}/code/tools/rc22/tts.py fr csv files + python3 -B ${workdir}/code/tools/rc22/tts.py es csv files + python3 -B ${workdir}/code/tools/rc22/tts.py it csv files + python3 -B ${workdir}/code/tools/rc22/tts.py de csv files + python3 -B ${workdir}/code/tools/nightly22/tts.py cz csv files + python3 -B ${workdir}/code/tools/nightly22/tts.py pt csv files + + # Create sdcards.zips for supported platforms + mv /tmp/SOUNDS ${workdir}/sdcard/horus/ + mkdir ${workdir}/sdcard/taranis-x9/SOUNDS + mkdir ${workdir}/sdcard/taranis-x7/SOUNDS + cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis-x9/ + cp -r ${workdir}/sdcard/horus/SOUNDS ${workdir}/sdcard/taranis-x7/ + cd ${workdir}/sdcard/horus && zip -r ${output}/sdcard/x12/sdcard-horus-${sdcard_version}.zip * + cd ${workdir}/sdcard/taranis-x9 && zip -r ${output}/sdcard/x9/sdcard-taranis-x9-${sdcard_version}.zip * + cd ${workdir}/sdcard/taranis-x7 && zip -r ${output}/sdcard/x7/sdcard-taranis-x7-${sdcard_version}.zip * + rm -Rf ${workdir}/sdcard +fi diff --git a/tools/rc22/tts.py b/tools/rc22/tts.py new file mode 100755 index 000000000..acb5cfab4 --- /dev/null +++ b/tools/rc22/tts.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +# This script is a modified version to support Linux TTS fiel genration using PicoTTS + +# Sound pack maintainers (incomplete list) by language alphabetical order +# Czech : Martin Hotar +# French : Bertrand Songis & André Bernet +# English : Rob Thompson & Martin Hotar +# German : Romolo Manfredini (Some corrections by Peer) +# Italian : Romolo Manfredini +# Portuguese : Romolo Manfredini +# Spanish : Romolo Manfredini (With the help of Jose Moreno) + +# from __future__ import print_function + +import os +import sys +import subprocess +import zipfile +from tts_common import * +board = "taranis" + +SOURCE_DIRECTORY = os.path.dirname(os.path.realpath(__file__)) +lib_path = os.path.abspath(os.path.join(SOURCE_DIRECTORY, '..', '..', 'radio', 'util')) +sys.path.append(lib_path) + +def generate(str, filename): + if 0: + output = "output.wav" + command = 'pico2wave -l=%s -w=%s "%s"' % (voice, output, str) + os.system(command.encode('utf-8')) + command = "sox %s -r 32000 %s reverse silence 1 0.1 0.1%% reverse" % (output, filename) + os.system(command.encode('utf-8')) + else: + output = "output.mp3" + command = 'gtts-cli -l %s -o %s "%s"' % (voice[:2], output, str) + os.system(command.encode('utf-8')) + command = "sox %s -r 32000 %s tempo 1.2" % (output, filename) + os.system(command.encode('utf-8')) + command = "rm -f output.mp3" + os.system(command.encode('utf-8')) + +################################################################ + +if __name__ == "__main__": + if "en" in sys.argv: + from tts_en import systemSounds, sounds + + directory = "en" + voice = "en-US" + + elif "fr" in sys.argv: + from tts_fr import systemSounds, sounds + + directory = "fr" + voice = "fr-FR" + + elif "it" in sys.argv: + from tts_it import systemSounds, sounds + + directory = "it" + voice = "it-IT" + + elif "de" in sys.argv: + from tts_de import systemSounds, sounds + + directory = "de" + voice = "de-DE" + + elif "es" in sys.argv: + from tts_es import systemSounds, sounds + + directory = "es" + voice = "es-ES" + + elif "cz" in sys.argv: + from tts_cz import systemSounds, sounds + + directory = "cz" + voice = "cs-CZ" + + elif "pt" in sys.argv: + from tts_pt import systemSounds, sounds + + directory = "pt" + voice = "pt-PT" + + else: + print("which language?") + exit() + + if "csv" in sys.argv: + path = "/tmp/SOUNDS/" + directory + "/SYSTEM/" + if not os.path.exists(path): + os.makedirs(path) + os.chdir(path) + with open("%s-%s.csv" % (voice, board), "wb") as csvFile: + for s, f in systemSounds: + if s and f: + l = u"" + if board in ("sky9x", "taranis"): + l += u"SOUNDS/%s/SYSTEM;" % directory + l += f + u";" + s + u"\n" + csvFile.write(l.encode("utf-8")) + for s, f in sounds: + if s and f: + l = u"" + if board in ("sky9x", "taranis"): + l += u"SOUNDS/%s;" % directory + l += f + u";" + s + u"\n" + csvFile.write(l.encode("utf-8")) + + if "files" in sys.argv: + path = "/tmp/SOUNDS/" + directory + "/SYSTEM/" + if not os.path.exists(path): + os.makedirs(path) + os.chdir(path) + for s, f in systemSounds: + if s and f: + generate(s, f) + os.chdir("..") + for s, f in sounds: + if s and f: + generate(s, f) diff --git a/tools/rc22/tts_common.py b/tools/rc22/tts_common.py new file mode 100644 index 000000000..25623b005 --- /dev/null +++ b/tools/rc22/tts_common.py @@ -0,0 +1,14 @@ +NO_ALTERNATE = 1024 +PROMPT_CUSTOM_BASE = 256 +PROMPT_SYSTEM_BASE = 0 +board = "taranis" + +import sys + +def filename(idx, alternate=0): + ext = ".wav" + if isinstance(idx, int): + result = "%04d%s" % (idx, ext) + elif board in ('sky9x', 'taranis'): + result = idx + ext + return result