Skip to content

Commit

Permalink
Add autobuild for Windows with JACK (jamulussoftware#1829)
Browse files Browse the repository at this point in the history
Co-authored-by: ann0see <[email protected]>
Co-authored-by: Christian Hoffmann <[email protected]>
Co-authored-by: Jonathan <[email protected]>
  • Loading branch information
4 people authored Sep 5, 2021
1 parent 3825204 commit 15fe013
Show file tree
Hide file tree
Showing 17 changed files with 345 additions and 101 deletions.
8 changes: 8 additions & 0 deletions .github/workflows/autobuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,14 @@ jobs:
cmd3_postbuild: powershell .\autobuild\windows\autobuild_windowsinstaller_3_copy_files.ps1
uses_codeql: true

- config_name: Windows JACK (artifact)
target_os: windows
building_on_os: windows-latest
cmd1_prebuild: powershell .\autobuild\windows\autobuild_windowsinstaller_1_prepare.ps1 -BuildOption jackonwindows
cmd2_build: powershell .\autobuild\windows\autobuild_windowsinstaller_2_build.ps1 -BuildOption jackonwindows
cmd3_postbuild: powershell .\autobuild\windows\autobuild_windowsinstaller_3_copy_files.ps1 -BuildOption jackonwindows
uses_codeql: false

runs-on: ${{ matrix.config.building_on_os }}
steps:

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ Jamulus - Internet Jam Session Software
Jamulus enables musicians to perform in real-time together over the internet.
A Jamulus server collects the incoming audio data from each Jamulus client, mixes that data and then sends that mix back to each client. Jamulus can support large numbers of clients with minimal latency and modest bandwidth requirements.

Jamulus is [__free and open source software__](https://www.gnu.org/philosophy/free-sw.en.html) (FOSS) licensed under the [GPL](http://www.gnu.org/licenses/gpl-2.0.html)
and runs under __Windows__ ([ASIO](https://www.steinberg.net)),
Jamulus is [__free and open source software__](https://www.gnu.org/philosophy/free-sw.en.html) (FOSS) licensed under the [GPL](http://www.gnu.org/licenses/gpl-2.0.html)
and runs under __Windows__ ([ASIO](https://www.steinberg.net) or [JACK](https://jackaudio.org)),
__MacOS__ ([Core Audio](https://developer.apple.com/documentation/coreaudio)) and
__Linux__ ([JACK](https://jackaudio.org)).
It is based on the [Qt framework](https://www.qt.io) and uses the [OPUS](http://www.opus-codec.org) audio codec.
Expand Down
27 changes: 27 additions & 0 deletions autobuild/windows/autobuild_windowsinstaller_1_prepare.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@
# autobuild_1_prepare: set up environment, install Qt & dependencies


####################
### PARAMETERS ###
####################

param(
# Allow buildoption to be passed for jackonwindows build, leave empty for standard (ASIO) build
[string] $BuildOption = ""
)


###################
### PROCEDURE ###
###################
Expand All @@ -17,3 +27,20 @@ aqt install --outputdir C:\Qt 5.15.2 windows desktop win64_msvc2019_64
echo "Get Qt 32 bit..."
# intermediate solution if the main server is down: append e.g. " -b https://mirrors.ocf.berkeley.edu/qt/" to the "aqt"-line below
aqt install --outputdir C:\Qt 5.15.2 windows desktop win32_msvc2019


#################################
### ONLY ADD JACK IF NEEDED ###
#################################

if ($BuildOption -Eq "jackonwindows")
{
echo "Install JACK2 64-bit..."
# Install JACK2 64-bit
choco install --no-progress -y jack

echo "Install JACK2 32-bit..."
# Install JACK2 32-bit (need to force choco install as it detects 64 bits as installed)
choco install --no-progress -y -f --forcex86 jack
}

14 changes: 11 additions & 3 deletions autobuild/windows/autobuild_windowsinstaller_2_build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@
### PARAMETERS ###
####################

# Get the source path via parameter
# Get the source path via parameter and BuildOption to empty when not provided
param (
[string] $jamulus_project_path = $Env:jamulus_project_path
[string] $jamulus_project_path = $Env:jamulus_project_path,
[string] $BuildOption = ""
)
# Sanity check of parameters
if (("$jamulus_project_path" -eq $null) -or ("$jamulus_project_path" -eq "")) {
Expand All @@ -27,4 +28,11 @@ if (("$jamulus_project_path" -eq $null) -or ("$jamulus_project_path" -eq "")) {

echo "Build installer..."
# Build the installer
powershell "$jamulus_project_path\windows\deploy_windows.ps1" "C:\Qt\5.15.2"
if ($BuildOption -ne "")
{
powershell "$jamulus_project_path\windows\deploy_windows.ps1" "C:\Qt\5.15.2" -BuildOption $BuildOption
}
else
{
powershell "$jamulus_project_path\windows\deploy_windows.ps1" "C:\Qt\5.15.2"
}
23 changes: 18 additions & 5 deletions autobuild/windows/autobuild_windowsinstaller_3_copy_files.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@
### PARAMETERS ###
####################

# Get the source path via parameter
# Get the source path via parameter and set BuildOption to empty when not provided
param (
[string] $jamulus_project_path = $Env:jamulus_project_path,
[string] $jamulus_buildversionstring = $Env:jamulus_buildversionstring
[string] $jamulus_buildversionstring = $Env:jamulus_buildversionstring,
[string] $BuildOption = ""
)
# Sanity check of parameters
if (("$jamulus_project_path" -eq $null) -or ("$jamulus_project_path" -eq "")) {
Expand All @@ -26,20 +27,32 @@ if (($jamulus_buildversionstring -eq $null) -or ($jamulus_buildversionstring -eq
$jamulus_buildversionstring = "NoVersion"
}

# Amend BuildOption when needed, only needed when the name build option in the artifact needs to be different
switch ($BuildOption)
{
"jackonwindows" {$BuildOption = "jack"; break}
}


###################
### PROCEDURE ###
###################

# Rename the file
echo "rename"
$artifact_deploy_filename = "jamulus_${Env:jamulus_buildversionstring}_win.exe"
if ($BuildOption -ne "")
{
$artifact_deploy_filename = "jamulus_${Env:jamulus_buildversionstring}_win_${BuildOption}.exe"
}
else
{
$artifact_deploy_filename = "jamulus_${Env:jamulus_buildversionstring}_win.exe"
}

echo "rename deploy file to $artifact_deploy_filename"
cp "$jamulus_project_path\deploy\Jamulus*installer-win.exe" "$jamulus_project_path\deploy\$artifact_deploy_filename"




Function github_output_value
{
param (
Expand Down
16 changes: 14 additions & 2 deletions src/res/translation/wininstaller/de.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_GERMAN} \
"ASIO Treiber"

LangString ASIO_DRIVER_SUB ${LANG_GERMAN} \
"Jamulus benötigt einen ASIO Treiber"
"${APP_NAME} benötigt einen ASIO Treiber"

LangString ASIO_DRIVER_EXPLAIN ${LANG_GERMAN} \
"Jamulus braucht einen ASIO Treiber um geringe Audio Latenz zu ermöglichen. Mehr Info:"
"${APP_NAME} braucht einen ASIO Treiber um geringe Audio Latenz zu ermöglichen. Mehr Info:"

LangString ASIO_DRIVER_MORE_INFO ${LANG_GERMAN} \
"Mehr info über ASIO auf jamulus.io"
Expand All @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_GERMAN} \

LangString ASIO_EXIT_NO_DRIVER ${LANG_GERMAN} \
"Um eine geringe Audio Verzögerung zu ermöglichen, braucht ${APP_NAME} einen ASIO Treiber. Da wir keinen auf deinem PC finden konnten, musst du einen, wie z.B. ASIO4ALL installieren (Infos dazu auf jamulus.io unter Installation auf Windows). Willst du trotzdem erst einmal mit der Installation von ${APP_NAME} fortfahren?"

LangString JACK_DRIVER_HEADER ${LANG_GERMAN} \
"JACK Audio Connection Kit"

LangString JACK_DRIVER_SUB ${LANG_GERMAN} \
"To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit"

LangString JACK_DRIVER_EXPLAIN ${LANG_GERMAN} \
"This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO."

LangString JACK_EXIT_NO_DRIVER ${LANG_GERMAN} \
"This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?"
16 changes: 14 additions & 2 deletions src/res/translation/wininstaller/en.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_ENGLISH} \
"ASIO driver"

LangString ASIO_DRIVER_SUB ${LANG_ENGLISH} \
"To use Jamulus, you need an ASIO driver"
"To use ${APP_NAME}, you need an ASIO driver"

LangString ASIO_DRIVER_EXPLAIN ${LANG_ENGLISH} \
"Jamulus needs an ASIO driver to provide low latency audio. More information:"
"${APP_NAME} needs an ASIO driver to provide low latency audio. More information:"

LangString ASIO_DRIVER_MORE_INFO ${LANG_ENGLISH} \
"More information about ASIO on jamulus.io"
Expand All @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_ENGLISH} \

LangString ASIO_EXIT_NO_DRIVER ${LANG_ENGLISH} \
"${APP_NAME} needs an ASIO audio driver to work, but we couldn't find one on your PC. You should install one like ASIO4ALL (More information on jamulus.io under Installation for Windows). Do you still want to continue with the installation of ${APP_NAME} first?"

LangString JACK_DRIVER_HEADER ${LANG_ENGLISH} \
"JACK Audio Connection Kit"

LangString JACK_DRIVER_SUB ${LANG_ENGLISH} \
"To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit"

LangString JACK_DRIVER_EXPLAIN ${LANG_ENGLISH} \
"This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO."

LangString JACK_EXIT_NO_DRIVER ${LANG_ENGLISH} \
"This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?"
16 changes: 14 additions & 2 deletions src/res/translation/wininstaller/es.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_SPANISH} \
"Driver ASIO"

LangString ASIO_DRIVER_SUB ${LANG_SPANISH} \
"Para utilizar Jamulus, necesitas un driver ASIO"
"Para utilizar ${APP_NAME}, necesitas un driver ASIO"

LangString ASIO_DRIVER_EXPLAIN ${LANG_SPANISH} \
"Jamulus necesita un driver ASIO para proporcionar una baja latencia. Más información:"
"${APP_NAME} necesita un driver ASIO para proporcionar una baja latencia. Más información:"

LangString ASIO_DRIVER_MORE_INFO ${LANG_SPANISH} \
"Más información sobre ASIO en jamulus.io"
Expand All @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_SPANISH} \

LangString ASIO_EXIT_NO_DRIVER ${LANG_SPANISH} \
"${APP_NAME} necesita un driver de audio ASIO para funcionar, pero no hemos podido encontrar ninguno en tu PC. Deberías instalar uno como ASIO4ALL (más información en jamulus.io, en Instalación en Windows). ¿Aún quieres seguir con la instalación de ${APP_NAME} primero?"

LangString JACK_DRIVER_HEADER ${LANG_SPANISH} \
"JACK Audio Connection Kit"

LangString JACK_DRIVER_SUB ${LANG_SPANISH} \
"To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit"

LangString JACK_DRIVER_EXPLAIN ${LANG_SPANISH} \
"This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO."

LangString JACK_EXIT_NO_DRIVER ${LANG_SPANISH} \
"This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?"
16 changes: 14 additions & 2 deletions src/res/translation/wininstaller/fr.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_FRENCH} \
"Pilote ASIO"

LangString ASIO_DRIVER_SUB ${LANG_FRENCH} \
"Pour utiliser Jamulus, vous avez besoin d'un pilote ASIO"
"Pour utiliser ${APP_NAME}, vous avez besoin d'un pilote ASIO"

LangString ASIO_DRIVER_EXPLAIN ${LANG_FRENCH} \
"Jamulus a besoin d'un pilote ASIO pour fournir un son à faible latence. Plus d'informations : "
"${APP_NAME} a besoin d'un pilote ASIO pour fournir un son à faible latence. Plus d'informations : "

LangString ASIO_DRIVER_MORE_INFO ${LANG_FRENCH} \
"Plus d'informations à propos d'ASIO sur jamulus.io"
Expand All @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_FRENCH} \

LangString ASIO_EXIT_NO_DRIVER ${LANG_FRENCH} \
"${APP_NAME} a besoin d'un pilote audio ASIO pour fonctionner, mais nous n'avons pas pu en trouver sur votre PC. Vous devriez en installer un comme ASIO4ALL (Plus d'informations sur jamulus.io sous Installation sous Windows). Voulez-vous tout de même continuer l'installation de ${APP_NAME} en premier ? "

LangString JACK_DRIVER_HEADER ${LANG_FRENCH} \
"JACK Audio Connection Kit"

LangString JACK_DRIVER_SUB ${LANG_FRENCH} \
"To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit"

LangString JACK_DRIVER_EXPLAIN ${LANG_FRENCH} \
"This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO."

LangString JACK_EXIT_NO_DRIVER ${LANG_FRENCH} \
"This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?"
20 changes: 16 additions & 4 deletions src/res/translation/wininstaller/it.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ LangString RUNNING_APP_MSG ${LANG_ITALIAN} \
"${APP_NAME} è in esecuzione. Chiudere l'applicazione prima di eseguire l'installazione."

LangString OLD_WRONG_VER_FOUND ${LANG_ITALIAN} \
"E' stata trovata una precedente versione di Jamulus nella cartella Programmi. E' altamente consigliato rimuoverla prima di procedere con l'insallazione di una nuova versione di Jamulus. Vuoi rimuoverla adesso?"
"E' stata trovata una precedente versione di ${APP_NAME} nella cartella Programmi. E' altamente consigliato rimuoverla prima di procedere con l'insallazione di una nuova versione di ${APP_NAME}. Vuoi rimuoverla adesso?"

LangString OLD_WRONG_VER_FOUND_CONFIRM ${LANG_ITALIAN} \
"Se non viene cancellata l'installazione potrebbe non andare a buona fine! Sei sicuro di voler continuare?"
Expand All @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_ITALIAN} \
"ASIO driver"

LangString ASIO_DRIVER_SUB ${LANG_ITALIAN} \
"Per usare Jamulus hai bisogno dei driver ASIO"
"Per usare ${APP_NAME} hai bisogno dei driver ASIO"

LangString ASIO_DRIVER_EXPLAIN ${LANG_ITALIAN} \
"Jamulus ha bisogno dei driver ASIO al fine di garantire una bassa latenza audio. Maggiori Informazioni:"
"${APP_NAME} ha bisogno dei driver ASIO al fine di garantire una bassa latenza audio. Maggiori Informazioni:"

LangString ASIO_DRIVER_MORE_INFO ${LANG_ITALIAN} \
"Maggiori informazioni sui driver ASIO disponibili su jamulus.io"
Expand All @@ -34,4 +34,16 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_ITALIAN} \
"https://jamulus.io/wiki/Installation-for-Windows#asio"

LangString ASIO_EXIT_NO_DRIVER ${LANG_ITALIAN} \
"Per assicurare una bassa latenza, Jamulus usa i driver ASIO. Questi non sono presenti sul PC, puoi installarne una versione come gli ASIO4ALL. Maggiori informazione su jamulus.io, trovi il link nella pagina in cui ti trovavi. Per tornarci premi su NO. Se premi 'Si', l'installazione continuerà."
"Per assicurare una bassa latenza, ${APP_NAME} usa i driver ASIO. Questi non sono presenti sul PC, puoi installarne una versione come gli ASIO4ALL. Maggiori informazione su jamulus.io, trovi il link nella pagina in cui ti trovavi. Per tornarci premi su NO. Se premi 'Si', l'installazione continuerà."

LangString JACK_DRIVER_HEADER ${LANG_ITALIAN} \
"JACK Audio Connection Kit"

LangString JACK_DRIVER_SUB ${LANG_ITALIAN} \
"To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit"

LangString JACK_DRIVER_EXPLAIN ${LANG_ITALIAN} \
"This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO."

LangString JACK_EXIT_NO_DRIVER ${LANG_ITALIAN} \
"This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?"
16 changes: 14 additions & 2 deletions src/res/translation/wininstaller/nl.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_DUTCH} \
"ASIO stuurprogramma"

LangString ASIO_DRIVER_SUB ${LANG_DUTCH} \
"Om Jamulus te kunnen gebruiken heeft u een ASIO stuurprogramma nodig"
"Om ${APP_NAME} te kunnen gebruiken heeft u een ASIO stuurprogramma nodig"

LangString ASIO_DRIVER_EXPLAIN ${LANG_DUTCH} \
"Jamulus heeft een ASIO stuurprogramma nodig voor low latency audio. Meer informatie:"
"${APP_NAME} heeft een ASIO stuurprogramma nodig voor low latency audio. Meer informatie:"

LangString ASIO_DRIVER_MORE_INFO ${LANG_DUTCH} \
"Meer informatie over ASIO op jamulus.io"
Expand All @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_DUTCH} \

LangString ASIO_EXIT_NO_DRIVER ${LANG_DUTCH} \
"${APP_NAME} heeft een ASIO audio-stuurprogramma nodig om te functioneren, en we hebben er geen op uw PC gevonden. U dient een stuurprogramma als ASIO4ALL te installeren (Meer informatie op jamulus.io onder Installation for Windows). Wilt u nog steeds verder gaan met de installatie van ${APP_NAME}?"

LangString JACK_DRIVER_HEADER ${LANG_DUTCH} \
"JACK Audio Connection Kit"

LangString JACK_DRIVER_SUB ${LANG_DUTCH} \
"Om deze versie van ${APP_NAME} te kunnen gebruiken heeft u de JACK Audio Connection Kit nodig"

LangString JACK_DRIVER_EXPLAIN ${LANG_DUTCH} \
"Deze versie van ${APP_NAME} maakt gebruik van de JACK Audio Connection Kit. Zorg ervoor dat deze geïnstalleerd is of download de standaard versie van ${APP_NAME} op jamulus.io die gebruikt maakt van ASIO."

LangString JACK_EXIT_NO_DRIVER ${LANG_DUTCH} \
"Deze ${APP_NAME} versie heeft de JACK Audio Connection Kit nodig om te functioneren, en we hebben deze niet op uw PC gevonden. U dient deze eerst zelf te installeren. Wilt u nog steeds verder gaan met de installatie van ${APP_NAME} zonder eerst JACK te installeren?"
16 changes: 14 additions & 2 deletions src/res/translation/wininstaller/pl.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ LangString ASIO_DRIVER_HEADER ${LANG_POLISH} \
"sterownik ASIO"

LangString ASIO_DRIVER_SUB ${LANG_POLISH} \
"Żeby używać Jamulus-a potrzebny jest sterownik ASIO"
"Żeby używać ${APP_NAME}-a potrzebny jest sterownik ASIO"

LangString ASIO_DRIVER_EXPLAIN ${LANG_POLISH} \
"Jamulus wymaga sterownika ASIO żeby zapewnić dźwięk o niskich opóźnieniach. Więcej informacji:"
"${APP_NAME} wymaga sterownika ASIO żeby zapewnić dźwięk o niskich opóźnieniach. Więcej informacji:"

LangString ASIO_DRIVER_MORE_INFO ${LANG_POLISH} \
"Więcej informacji o ASIO na jamulus.io"
Expand All @@ -35,3 +35,15 @@ LangString ASIO_DRIVER_MORE_INFO_URL ${LANG_POLISH} \

LangString ASIO_EXIT_NO_DRIVER ${LANG_POLISH} \
"${APP_NAME} wymaga sterownika ASIO do działania, ale nie można go było znaleźć na tym komputerze. Powinieneś zainstalować np. ASIO4ALL (Więcej informacji na jamulus.io w sekcji Istalacja dla Windows). Czy nadal chcesz najpierw zainstalować ${APP_NAME}?"

LangString JACK_DRIVER_HEADER ${LANG_POLISH} \
"JACK Audio Connection Kit"

LangString JACK_DRIVER_SUB ${LANG_POLISH} \
"To use this version of ${APP_NAME}, you need use the JACK Audio Connection Kit"

LangString JACK_DRIVER_EXPLAIN ${LANG_POLISH} \
"This version of ${APP_NAME} is making use of the JACK Audio Connection Kit. Please make sure this has been installed or download the standard version of ${APP_NAME} on jamulus.io which is using ASIO."

LangString JACK_EXIT_NO_DRIVER ${LANG_POLISH} \
"This ${APP_NAME} version needs the JACK Audio Connection Kit to work, but it doesn't seem to be installed on your PC. You should install JACK for Windows first. Do you still want to continue with the installation of ${APP_NAME} without installing JACK first?"
Loading

0 comments on commit 15fe013

Please sign in to comment.