Oh not bad. Three hours, rebuilt Ubuntu, put all the dependencies in first, ran the hacked script and…all good! One slight hiccup, Steinberg SDK didn’t extract to the /home/SDKs folder. I retrieved it from /tmp and did it manually! Thanks to Jules and all.
I tried this and fiddled with the original bash script a bit, there were some issues mentioned here and some others I encountered like a missing desktop icon… The following snippet worked flawlessy installing JUCE & VST SDK & All the dependencies on a fresh Ubuntu 16.04 install, and a blank plugin project compiled fine. There might be some extra dev tools included tho.
So,
- chmod +x installJUCE.sh
- sudo ./installJUCE.sh
and the file installJUCE.sh:
#!/bin/bash
## Installer for JUCE (https://www.juce.com/)
read -p "Install Dev tools & Dependencies? [Y/n]: " inst
if [ $inst = y ] || [ $inst = Y ]
then
apt-get install build-essential python-dev git npm gnome-tweak-tool openjdk-8-jdk
apt-get install --no-install-recommends gnome-panel
apt-get -y install libwebkit2gtk-4.0 libgtk-3-dev
apt-get install libwebkit2gtk-4.0-dev libwebkit2gtk-4.0-doc
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main"
sudo apt-get update
sudo apt-get install -y clang-5.0
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 100
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-5.0 1000
update-alternatives --install /usr/bin/clang++ clang /usr/bin/clang-3.8 100
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.8 100
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-5.0 1000
## These may not be needed.. But remember to use CLang 5.0 or greated, folks.
update-alternatives --config clang
update-alternatives --config clang++
fi
## Installer for JUCE (https://www.juce.com/)
read -p "Install JUCE Huckleberry? [Y/n]: " inst
if [ $inst = y ] || [ $inst = Y ]
then
cd ~
if [ -e "JUCE/Projects" ]
then
mv JUCE/Projects/ /tmp/tmpJUCEProjects/
fi
if [ -e "JUCE" ]
then
rm -rf JUCE
fi
## https://forum.juce.com/t/freeze-when-opening-filechooser/16026/38
echo "Cloning JUCE Huckleberry ..."
git clone -b develop https://github.com/WeAreROLI/JUCE
## Install dependencies for JUCE: (https://forum.juce.com/t/juce-4-2-1-setup-on-apt-based-linux-ubuntu-16-04-lts-mint-elementary-os-freya/17164)
sudo apt-get -q update
sudo apt-get -y --allow-unauthenticated install llvm clang-5.0 libfreetype6-dev libx11-dev libxinerama-dev libxrandr-dev libxcursor-dev mesa-common-dev libasound2-dev freeglut3-dev libxcomposite-dev libcurl4-gnutls-dev
## change the default compiler path
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
## Create a 'Projects' folder or put the old one back
if [ -e "/tmp/tmpJUCEProjects" ]
then
mv /tmp/tmpJUCEProjects/ JUCE/Projects/
else
mkdir JUCE/Projects
fi
## Build the Projucer from Source code
cd JUCE/extras/Projucer/Builds/LinuxMakefile
make CONFIG=Release
if [ ! $? -eq 0 ]
then
echo "Building the Projector failed."
exit
fi
mv build/Projucer ~/JUCE/
## Create a Desktop launcher
sudo touch /usr/share/applications/projucer.desktop
echo "[Desktop Entry]
Name=Projucer
Comment=JUCE Huckleberry Projucer
Exec=$HOME/JUCE/Projucer
Icon=$HOME/JUCE/extras/Projucer/Source/BinaryData/Icons/juce_icon.png
Terminal=false
Type=Application
Categories=AudioVideo;Audio;Graphics;Development;IDE;ProjectManagement;" | sudo tee /usr/share/applications/projucer.desktop | sudo tee $HOME/Desktop/projucer.desktop
sudo chmod a+x /usr/share/applications/projucer.desktop
sudo chmod a+x $HOME/Desktop/projucer.desktop
## Add the MIME type to the system, so .jucer files will automatically open with the Projucer
sudo touch /usr/share/mime/packages/juce.xml
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\">
<mime-type type=\"application/x-juce\">
<comment>JUCE project</comment>
<sub-class-of type=\"application/xml\"/>
<glob pattern=\"*.jucer\"/>
</mime-type>
</mime-info>" | sudo tee /usr/share/mime/packages/juce.xml
sudo update-mime-database /usr/share/mime
echo "application/x-juce=projucer.desktop" | sudo tee --append /usr/share/applications/defaults.list
echo "Installed"
fi
## Steinberg VST SDK 3
read -p "Download Steinberg VST SDK 3? [Y/n]: " inst
if [ $inst = y ] || [ $inst = Y ]
then
cd /tmp/
if [ -e vstsdk368_08_11_2017_build_121.zip ]
then
rm vstsdk368_08_11_2017_build_121.zip
fi
echo "Downloading Steinberg VST3 SDK ..."
wget https://download.steinberg.net/sdk_downloads/vstsdk368_08_11_2017_build_121.zip
echo "Extracting ..."
unzip -q vstsdk368_08_11_2017_build_121.zip
if [ ! -e "$HOME/SDKs" ]
then
mkdir "$HOME/SDKs"
fi
mv "VST_SDK" "$HOME/SDKs"
echo "Downloaded."
fi
read -p "Run Projucer? [Y/n]: " inst
if [ $inst = y ] || [ $inst = Y ]
then
$HOME/JUCE/Projucer
fi
Really nice work!
I can propose the following improvements:
- Clone from
https://github.com/WeAreROLI/JUCE
instead of from the old URL (https://github.com/julianstorer/JUCE
) -
Grapefruit
was the code name of JUCE 4, let’s change it to JUCE 5’s:Huckleberry
- Always spell
JUCE
all-caps in comments, notJuce
- Download the latest VST SDK (https://download.steinberg.net/sdk_downloads/vstsdk368_08_11_2017_build_121.zip), since the
develop
branch doesn’t work with version 3.6.5 anymore.
Thanks for the suggestions, script fixed and tested again!
I have a fresh 16.04 install just as you describe…except I installed Chrome. Yet, I can’t even get past the 5th line in the script:
~$ sudo ./installJUCE.sh
Install Dev tools & Dependencies? [Y/n]:
./installJUCE.sh: line 5: [: =: unary operator expected
./installJUCE.sh: line 5: [: =: unary operator expected
Install JUCE Huckleberry? [Y/n]: ^C
I copied the text above and pasted to ~/installJUCE.sh, chmod +x, then ran it. Any ideas?
(also)
~$ echo $SHELL
/bin/bash
Thanks,
Chris
Hmmm that error leads to next possible solution: try to change all the []-brackets into double brackets so
if [ $inst = y ] || [ $inst = Y ]
would become
if [[ $inst = y ]] || [[ $inst = Y ]]
Strange it didn’t happen for me but you can check more on Google or https://stackoverflow.com/questions/13617843/unary-operator-expected
Yeah. I forgot to reply back to this thread, but that is what fixed it for me.
Hello after multiple crash of the projucer JIT compiler on Windows 10, I install Projucer with the bash supplied by “kaukomedia” on a fresh new Ubuntu 16.04 LTS installation the script look like to run smoothly but I have a white screen without any bouton.
I have only this error could them be the source of the problem?
CJUCE Assertion failure in juce_Desktop.cpp:47
Thank you for sharing your script.
Regards
Alexandre
By downloading the compiled Projucer on juce.com I go core dump after sign . (The demo runner run smoothly).
So I build the Projucer with the provided makefile everything run smoothly no more error but I have still a white screen. The terminal print:
JUCE v5.3.2
Projucer 5.3.2 — Build date: Jul 12 2018
Log started: 12 Jul 2018 11:18:44pmLinux
CPU: 949MHz Cores: 4 3850MB
JUCE v5.3.2
Then when I perform a clic left to the screen I got:
JUCE Assertion failure in juce_String.cpp:322
Erreur de segmentation (core dumped)
I try to build from Master and Develop branch on Ubuntu 16.04 LTS it’s the same
Regards
Please try the latest tip of the develop branch - I’ve just fixed an issue with similar symptoms.
Thank you very much for your help. I just compile a new download of the Develop branch GIT on Ubuntu 16.04 LTS. Now the login and password screen appear. But when I log successfully I got core dump. But if I don’t log successfully, I don’t got coredump, I just got the normal message “We were unable to locate an existing user with these credentials.” And If clic 'I don’t have account" I have the page allowing me to create an account.
Finally I switch on Ubuntu 18.04 LTS, Juce 5.3 run smoothly, (install in major part with this script (kaukomedia version) ) so I will stay on 18.04 LTS.
Thank you again
Alexandre
Hi there,
thanks for the effort making this installation script.
As a small annotation to it: if you’d replace the line downloading the VST3 SDK by this:
wget -o vstsdk-latest.zip https://www.steinberg.net/vst3sdk
you should always have the latest SDK downloaded, since wget resolves the redirection for you. Afterwards you could replace all the lines containing the name of the specific *.zip file by "vstsdk-latest.zip:
cd /tmp/
if [ -e vstsdk-latest.zip ]
then
rm vstsdk-latest.zip
fi
echo "Downloading Steinberg VST3 SDK ..."
wget -o vstsdk-latest.zip https://www.steinberg.net/vst3sdk
echo "Extracting ..."
unzip -q vstsdk-latest.zip
and so on.
Kind Regards!
P.S.: The -o flag is because wget would save the file to “vst3sdk” without an extention.
EDIT:
Alternatively
wget --trust-server-names https://www.steinberg.net/vst3sdk
downloads the latest sdk preserving the filename, currently “vstsdk3610_11_06_2018_build_37.zip”. You just need to tell the script which is the latest zip file, if there are more than one.
This thread is quite old – does the script still work?
Also, JetBrains CLion is now on the list of Target Platforms and it appears to be a very nice IDE and growing in popularity.
Is there a better method of getting Projucer up and running on Linux 14.04 or 16.04?
Thanks.
I updated the script for Ubuntu Linux 18.04. The main changes are that the Steinberg VST3 SDK Link was not working any more. In addition I saw that the generated JUCE program folder and desktop item was generated with SUDO ownership, so I changed it to standard ownership. Also it should be noted that in some Ubuntu languages the folder Desktop might have a different name now, so “Desktop” in line 88, 90 and 132 has to be changed correspondingly if non English Ubuntu is used. Attached the code:
So,
- chmod +x [installJUCE.sh ]
- sudo ./installJUCE.sh
- Set in Projucer the File/Global Paths to the VST3 folder in ~/SDKs/VST_SDK/VST3_SDK and installation folder of Android Studio studio.sh
and the file [installJUCE.sh ]
bin/bash
## Installer for JUCE (https://www.juce.com/)
read -p "Install Dev tools & Dependencies? [Y/n]: " inst
if [ $inst = y ] || [ $inst = Y ]
then
apt-get install build-essential python-dev git npm gnome-tweak-tool openjdk-8-jdk
apt-get install --no-install-recommends gnome-panel
apt-get -y install libwebkit2gtk-4.0 libgtk-3-dev
apt-get install libwebkit2gtk-4.0-dev libwebkit2gtk-4.0-doc
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main"
sudo apt-get update
sudo apt-get install -y clang-5.0
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 100
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-5.0 1000
update-alternatives --install /usr/bin/clang++ clang /usr/bin/clang-3.8 100
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.8 100
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-5.0 1000
## These may not be needed.. But remember to use CLang 5.0 or greated, folks.
update-alternatives --config clang
update-alternatives --config clang++
fi
## Installer for JUCE (https://www.juce.com/)
read -p "Install JUCE Huckleberry? [Y/n]: " inst
if [ $inst = y ] || [ $inst = Y ]
then
cd ~
if [ -e "JUCE/Projects" ]
then
mv JUCE/Projects/ /tmp/tmpJUCEProjects/
fi
if [ -e "JUCE" ]
then
rm -rf JUCE
fi
## https://forum.juce.com/t/freeze-when-opening-filechooser/16026/38
echo "Cloning JUCE Huckleberry ..."
git clone -b develop https://github.com/WeAreROLI/JUCE
## Install dependencies for JUCE: (https://forum.juce.com/t/juce-4-2-1-setup-on-apt-based-linux-ubuntu-16-04-lts-mint-elementary-os-freya/17164)
sudo apt-get -q update
sudo apt-get -y --allow-unauthenticated install llvm clang-5.0 libfreetype6-dev libx11-dev libxinerama-dev libxrandr-dev libxcursor-dev mesa-common-dev libasound2-dev freeglut3-dev libxcomposite-dev libcurl4-gnutls-dev
## change the default compiler path
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
## Create a 'Projects' folder or put the old one back
if [ -e "/tmp/tmpJUCEProjects" ]
then
mv /tmp/tmpJUCEProjects/ JUCE/Projects/
else
mkdir JUCE/Projects
fi
## Build the Projucer from Source code
cd JUCE/extras/Projucer/Builds/LinuxMakefile
make CONFIG=Release
if [ ! $? -eq 0 ]
then
echo "Building the Projector failed."
exit
fi
mv build/Projucer ~/JUCE/
## Create a Desktop launcher
sudo touch /usr/share/applications/projucer.desktop
echo "[Desktop Entry]
Name=Projucer
Comment=JUCE Huckleberry Projucer
Exec=$HOME/JUCE/Projucer
Icon=$HOME/JUCE/extras/Projucer/Source/BinaryData/Icons/juce_icon.png
Terminal=false
Type=Application
Categories=AudioVideo;Audio;Graphics;Development;IDE;ProjectManagement;" | sudo tee /usr/share/applications/projucer.desktop | sudo tee $HOME/Desktop/projucer.desktop
sudo chmod a+x /usr/share/applications/projucer.desktop
sudo chmod a+x $HOME/Desktop/projucer.desktop
## Add the MIME type to the system, so .jucer files will automatically open with the Projucer
sudo touch /usr/share/mime/packages/juce.xml
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\">
<mime-type type=\"application/x-juce\">
<comment>JUCE project</comment>
<sub-class-of type=\"application/xml\"/>
<glob pattern=\"*.jucer\"/>
</mime-type>
</mime-info>" | sudo tee /usr/share/mime/packages/juce.xml
sudo update-mime-database /usr/share/mime
echo "application/x-juce=projucer.desktop" | sudo tee --append /usr/share/applications/defaults.list
echo "Installed"
## Steinberg VST SDK 3
read -p "Download Steinberg VST SDK 3? [Y/n]: " inst
if [ $inst = y ] || [ $inst = Y ]
then
cd /tmp/
if [ -e vstsdk3613_08_04_2019_build_81.zip ]
then
rm vstsdk3613_08_04_2019_build_81.zip
fi
echo "Downloading Steinberg VST3 SDK ..."
wget https://download.steinberg.net/sdk_downloads/vstsdk3613_08_04_2019_build_81.zip
echo "Extracting ..."
unzip -q vstsdk3613_08_04_2019_build_81.zip
if [ ! -e "$HOME/SDKs" ]
then
mkdir "$HOME/SDKs"
fi
mv "VST_SDK" "$HOME/SDKs"
echo "Downloaded."
fi
#### set permission to non sudo (if required)
sudo chown $USER:$USER $HOME/Desktop/projucer.desktop
sudo chown -R $USER:$USER $HOME/JUCE
sudo chown -R $USER:$USER $HOME/SDKs
read -p "Run Projucer? [Y/n]: " inst
if [ $inst = y ] || [ $inst = Y ]
then
$HOME/JUCE/Projucer
fi
Hey there,
I just tried running the script under ubuntu 18.04, and am getting an error…
I copy pasted everything exactly.
This is the output :
$ sudo ./installJUCE.sh
./installJUCE.sh: 1: ./installJUCE.sh: bin/bash: not found
Install Dev tools & Dependencies? [Y/n]:
./installJUCE.sh: 5: [: =: unexpected operator
./installJUCE.sh: 5: [: =: unexpected operator
Install JUCE Huckleberry? [Y/n]:
./installJUCE.sh: 104: ./installJUCE.sh: Syntax error: end of file unexpected (expecting “fi”)
Make sure that the first line of the installJUCE.sh
script is:
#!/bin/bash
and not:
bin/bash
I think there may be hidden chars in the text… ?
Now the error message has changed to this:
$ ./installJUCE.sh
Install Dev tools & Dependencies? [Y/n]:
./installJUCE.sh: line 5: [: =: unary operator expected
./installJUCE.sh: line 5: [: =: unary operator expected
Install JUCE Huckleberry? [Y/n]:
./installJUCE.sh: line 141: syntax error: unexpected end of file
Thank you for the update. I can build it.
I found that before that line, “fi” was missing. Can you edit it?
This one has the missing “fi” integrated
bin/bash
## Installer for JUCE (https://www.juce.com/)
read -p "Install Dev tools & Dependencies? [Y/n]: " inst
if [ $inst = y ] || [ $inst = Y ]
then
apt-get install build-essential python-dev git npm gnome-tweak-tool openjdk-8-jdk
apt-get install --no-install-recommends gnome-panel
apt-get -y install libwebkit2gtk-4.0 libgtk-3-dev
apt-get install libwebkit2gtk-4.0-dev libwebkit2gtk-4.0-doc
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main"
sudo apt-get update
sudo apt-get install -y clang-5.0
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 100
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-5.0 1000
update-alternatives --install /usr/bin/clang++ clang /usr/bin/clang-3.8 100
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.8 100
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-5.0 1000
## These may not be needed.. But remember to use CLang 5.0 or greated, folks.
update-alternatives --config clang
update-alternatives --config clang++
fi
## Installer for JUCE (https://www.juce.com/)
read -p "Install JUCE Huckleberry? [Y/n]: " inst
if [ $inst = y ] || [ $inst = Y ]
then
cd ~
if [ -e "JUCE/Projects" ]
then
mv JUCE/Projects/ /tmp/tmpJUCEProjects/
fi
if [ -e "JUCE" ]
then
rm -rf JUCE
fi
## https://forum.juce.com/t/freeze-when-opening-filechooser/16026/38
echo "Cloning JUCE Huckleberry ..."
git clone -b develop https://github.com/WeAreROLI/JUCE
## Install dependencies for JUCE: (https://forum.juce.com/t/juce-4-2-1-setup-on-apt-based-linux-ubuntu-16-04-lts-mint-elementary-os-freya/17164)
sudo apt-get -q update
sudo apt-get -y --allow-unauthenticated install llvm clang-5.0 libfreetype6-dev libx11-dev libxinerama-dev libxrandr-dev libxcursor-dev mesa-common-dev libasound2-dev freeglut3-dev libxcomposite-dev libcurl4-gnutls-dev
## change the default compiler path
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
## Create a 'Projects' folder or put the old one back
if [ -e "/tmp/tmpJUCEProjects" ]
then
mv /tmp/tmpJUCEProjects/ JUCE/Projects/
else
mkdir JUCE/Projects
fi
## Build the Projucer from Source code
cd JUCE/extras/Projucer/Builds/LinuxMakefile
make CONFIG=Release
if [ ! $? -eq 0 ]
then
echo "Building the Projector failed."
exit
fi
mv build/Projucer ~/JUCE/
## Create a Desktop launcher
sudo touch /usr/share/applications/projucer.desktop
echo "[Desktop Entry]
Name=Projucer
Comment=JUCE Huckleberry Projucer
Exec=$HOME/JUCE/Projucer
Icon=$HOME/JUCE/extras/Projucer/Source/BinaryData/Icons/juce_icon.png
Terminal=false
Type=Application
Categories=AudioVideo;Audio;Graphics;Development;IDE;ProjectManagement;" | sudo tee /usr/share/applications/projucer.desktop | sudo tee $HOME/Desktop/projucer.desktop
sudo chmod a+x /usr/share/applications/projucer.desktop
sudo chmod a+x $HOME/Desktop/projucer.desktop
## Add the MIME type to the system, so .jucer files will automatically open with the Projucer
sudo touch /usr/share/mime/packages/juce.xml
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\">
<mime-type type=\"application/x-juce\">
<comment>JUCE project</comment>
<sub-class-of type=\"application/xml\"/>
<glob pattern=\"*.jucer\"/>
</mime-type>
</mime-info>" | sudo tee /usr/share/mime/packages/juce.xml
sudo update-mime-database /usr/share/mime
echo "application/x-juce=projucer.desktop" | sudo tee --append /usr/share/applications/defaults.list
echo "Installed"
fi
## Steinberg VST SDK 3
read -p "Download Steinberg VST SDK 3? [Y/n]: " inst
if [ $inst = y ] || [ $inst = Y ]
then
cd /tmp/
if [ -e vstsdk3613_08_04_2019_build_81.zip ]
then
rm vstsdk3613_08_04_2019_build_81.zip
fi
echo "Downloading Steinberg VST3 SDK ..."
wget https://download.steinberg.net/sdk_downloads/vstsdk3613_08_04_2019_build_81.zip
echo "Extracting ..."
unzip -q vstsdk3613_08_04_2019_build_81.zip
if [ ! -e "$HOME/SDKs" ]
then
mkdir "$HOME/SDKs"
fi
mv "VST_SDK" "$HOME/SDKs"
echo "Downloaded."
fi
#### set permission to non sudo (if required)
sudo chown $USER:$USER $HOME/Desktop/projucer.desktop
sudo chown -R $USER:$USER $HOME/JUCE
sudo chown -R $USER:$USER $HOME/SDKs
read -p "Run Projucer? [Y/n]: " inst
if [ $inst = y ] || [ $inst = Y ]
then
$HOME/JUCE/Projucer
fi