Help building Score on Pi 3

Hello, I’ve been having trouble building score on a Raspberry Pi 3 with the 32bit Raspberry Pi OS. I’ve been following procedures that Thibaud kindly sent me. Firstly to set up dependencies as per this script:

I preceded this with:

sudo apt update

sudo apt full-upgrade

So far, so good.

I then clone the score git recursively, create a build directory with in it and from this build directory, I run the following:

cmake … -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DSCORE_DYNAMIC_PLUGINS=1 -DSCORE_PCH=1 -DCMAKE_CXX_FLAGS=’-Ofast -march=native’ -DCMAKE_C_FLAGS=’-Ofast -march=native’ 2>&1 | tee …/configure$(date +"%Y-%m-%d_%H-%M").log

This runs OK. However, it notes that qtshadertools is needed for video, which I will be needing. I have not managed to get a build for Qt 5.15.1 on the Pi 3. I’ve tried cross compiling but so far with no success. Thibaud said however that it’s not necessary to build it and that packages are OK. I ran an sudo apt-cache search qtshadertools, but it didn’t come up with anything. Is there any package for it? I’m not able to build it without Qt.

I also needed to install libsndfile1-dev

My configure log after installing libsndfile1-dev is posted here:

https://escuta.org/webtemp/configure2021-02-18_08-05.log

Continuing on regardless, I ran:

cmake --build . 2>&1 | tee …/make$(date +"%Y-%m-%d_%H-%M").log

It fails, i think with problems do to missing boost files. From googling, it seems I have an old version of boost, however when I mentioned this to Thibaud, he said that the boost library should already be included with the Score repo.

see: https://escuta.org/webtemp/make2021-02-18_08-12.log

Can anyone please offer some suggestions?

Thanks!

Hi @iain,

the qtshadertools are a separate Qt module that you will need to compile separately as it isn’t provided in the packages. All other Qt modules can be found in withe the package manager. To build qtshadertools, run the folowing

git clone --recursive https://github.com/jcelerier/qtshadertools.git  
cd qtshadertools
qmake && make -j4
make install

once this is installed,
you can run cmake again without pch to see if there is any difference

cmake … -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DSCORE_DYNAMIC_PLUGINS=1 -DCMAKE_CXX_FLAGS=’-Ofast -march=native’ -DCMAKE_C_FLAGS=’-Ofast -march=native

Thanks a lot Thibaud! Looks like I’m going to have to this on a Pi 4. My Pi 3 seems to be running out of memory, it freezes up and becomes unresponsive on the compilation step. Will report back on how I get on.

Actually you could also try without Ninja.
It’s a bit too demanding for low power computers.

you’ll need a fresh cmake configuration (safest to completely delete your build deirectory)
and run the same command without ninja, and without any parallel jobs.

cmake … -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DSCORE_DYNAMIC_PLUGINS=1 -DCMAKE_CXX_FLAGS=’-Ofast -march=native’ -DCMAKE_C_FLAGS=’-Ofast -march=native

it is going to take far longer, (let it run for the night), and may freeze up a couple times along the way, but if it is anything like compiling on ancient computers like I used to do, it’ll eventually get there.

Switching on the pi 4 will facilitate a lot of that, altho I wouldn’t still recommend using Ninja to build natively on the pi. Even for an entry 2017 mac-mini, it can be too much.

Actually it was the qtshadertools build that froze but I managed to build it with -j2 instead of -j4. Installed fine. Deleted the content of score’s build directory and reconfigured as you suggest. Unfortunately the build fails with:

[64/1163] Building CXX object 3rdparty/libossia/src/CMakeFiles/ossia.dir/ossia/context.cpp.o
ninja: build stopped: subcommand failed.

EDIT: sorry, I was meant to remove -GNinja. Trying again…

OK, without -GNinja, it got to the 6% mark and then failed again with the Boost problem:

[  6%] Building CXX object 3rdparty/libossia/src/CMakeFiles/ossia.dir/ossia/network/domain/domain_base.cpp.o
In file included from /home/pi/git/score/3rdparty/libossia/3rdparty/boost_1_75_0/boost/container/detail/mpl.hpp:26,
                 from /home/pi/git/score/3rdparty/libossia/3rdparty/boost_1_75_0/boost/container/allocator_traits.hpp:32,
                 from /home/pi/git/score/3rdparty/libossia/3rdparty/boost_1_75_0/boost/container/vector.hpp:27,
                 from /home/pi/git/score/3rdparty/libossia/3rdparty/boost_1_75_0/boost/container/small_vector.hpp:27,
                 from /home/pi/git/score/3rdparty/libossia/src/ossia/detail/small_vector.hpp:7,
                 from /home/pi/git/score/3rdparty/libossia/src/ossia/detail/destination_index.hpp:4,
                 from /home/pi/git/score/3rdparty/libossia/src/ossia/network/value/value.hpp:2,
                 from /home/pi/git/score/3rdparty/libossia/src/ossia/network/value/value_traits.hpp:2,
                 from /home/pi/git/score/3rdparty/libossia/src/ossia/network/domain/domain_base_impl.hpp:5,
                 from /home/pi/git/score/3rdparty/libossia/src/ossia/network/domain/domain_base.hpp:2,
                 from /home/pi/git/score/3rdparty/libossia/src/ossia/network/domain/domain_base.cpp:3:
/home/pi/git/score/3rdparty/libossia/3rdparty/boost_1_75_0/boost/move/detail/type_traits.hpp:33:10: fatal error: boost/assert.hpp: No such file or directory
   33 | #include <boost/assert.hpp>
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [3rdparty/libossia/src/CMakeFiles/ossia.dir/build.make:112: 3rdparty/libossia/src/CMakeFiles/ossia.dir/ossia/network/domain/domain_base.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:2317: 3rdparty/libossia/src/CMakeFiles/ossia.dir/all] Error 2
gmake: *** [Makefile:160: all] Error 2
pi@raspberrypi:~/git/score/build $

Managed to build score, however not out of the woods yet, unfortunately. First I’ll explain how I got the compilation to work:

Up until yesterday I had performed “sudo apt-get update” and “sudo apt-get upgrade” but not “sudo apt full-upgrade”. After this, libboost 1.7.4 became available in the repositories and once installed, the score compilation could proceed. But not without stalling. I edited /etc/dphys-swapfile and changed CONF_SWAPSIZE from the default of 100 Mb to 600. After re-initiating with “/etc/init.d/dphys-swapfile restart” the compilation went ahead and finished over night.

Now, when I run score with ./run.sh from the build directory, the flash screen is displayed. I can create a new project, however when I look at the settings there are no options available to adjust, it looks like this:

If I attempt to load a previously created project from my main computer, score crashes with a segmentation fault.

Also, there are many “undefined symbol” warnings when the score is launched. See:

https://escuta.org/webtemp/launch.log

Unfortunately I forgot to log the build but here is what I salvaged from the terminal:

https://escuta.org/webtemp/build.log

To finish up, I did manage to build score using the above steps. Something perhaps went wrong with the power on my first attempt (there was an electrical storm) because on the second, it all went well.

With the patient help of Thibaud and Jean-Michael on the OSSI/score gitter pages, the following approach was struck upon to get Score running:

Score runs on the Pi, however without installing the real-time kernel, it ran very slowly. If no audio is needed inside of score, the audio device settings may be set to “Dummy (no audio”) and this runs smoothly. My project needs audio inside of score and I installed the real-time kernel on my Pi 3 with the following instructions:

This also enabled me to get Jack to work, which I couldn’t do beforehand. I’m using Jack as the driver in Score’s settings and as such, the transport runs correctly without any observable delays.

Running Score with a GUI on my Pi 3 causes it to overheat and eventually reboot automatically. So I’ll be developing my project on another machine and deploying on the Pi when done and running with --no-gui and --autoplay arguments before the project filename. Testing with no gui, the Pi does not overheat.

Playing video inside of the Score on the Pi does not yet work, however Jean-Michael says that it may be functional in the near future.

All the best,

Iain