clearly-broken-software / ninjas2

Rewrite of Ninjas sample slicer
GNU General Public License v3.0
180 stars 13 forks source link

make on raspberry pi fails #103

Open alignwaivers opened 4 years ago

alignwaivers commented 4 years ago

Hey, I've been trying to build on raspberry pi (4 b), and successfully got the distrho/dpf examples to work, but can't seem to build ninjas2 in any way. The standard instructions for build (all dependencies are installed and up-to-date

libgl1-mesa-dev is already the newest version (19.2.0~rc1-1~bpo10+1~rpt3). libsamplerate0-dev is already the newest version (0.1.9-2). libx11-dev is already the newest version (2:1.6.7-1). libsndfile1-dev is already the newest version (1.0.28-6).

and after I run git clone --recursive https://github.com/rghvdberg/ninjas2.git and cd into dirrectory:

$ make make -C aubio make[1]: Entering directory '/home/pi/installed_local/l/ninjas2/aubio' cc src/cvec.c -Wall -Wextra -pipe -MD -MP -fPIC -DPIC -DNDEBUG -O3 -ffast-math -mtune=generic -msse -msse2 -fdata-sections -ffunction-sections -fvisibility=hidden -std=gnu99 -Isrc -DHAVE_CONFIG_H -MD -MP -c -o src/cvec.c.o cc: error: unrecognized command line option ‘-msse’; did you mean ‘-fdse’? cc: error: unrecognized command line option ‘-msse2’ make[1]: [Makefile:71: src/cvec.c.o] Error 1 make[1]: Leaving directory '/home/pi/installed_local//ninjas2/aubio' make: [Makefile:29: libs] Error 2

Alternatively, if I attempt to make from the autobuild release:

$ make Makefile:9: dpf/Makefile.base.mk: No such file or directory make: *** No rule to make target 'dpf/Makefile.base.mk'. Stop.

Any insights on this would be very helpful, even if I have to do some digging it'd be quite worth it for me get this software working on the pi!

Thanks!

JPenuchot commented 4 years ago

Hi,

-msse and -msse2 are enabled only if your compiler reports your machine as having an x86 architecture, which is determined by parsing the output of cc -dumpmachine. Could you please give me the output of that command run on your RPi ?

Thank you, Jules

alignwaivers commented 4 years ago

pi@raspberrypi:~ $ cc -dumpmachine arm-linux-gnueabihf

Thanks! glad to do whatever I can to make it work

JPenuchot commented 4 years ago

Hey, I looked it up in detail, it should have been fixed now. It was an issue from DPF that was resolved but not merged in the master branch of the DPF fork used by ninjas2. https://github.com/DISTRHO/DPF/issues/190 I believe the submodule was updated in ninjas2 because the Makefile for dpf I get when I git clone --recursive is the right one now.

tl;dr: the submodule you cloned in january was outdated, just do a fresh clone and you should be fine!

alignwaivers commented 4 years ago

Hmm thanks for looking into this. unfortunately it looks like there's still a failure of recognition of the architecture? For reference @rghvdberg had suggested using the system aubio (not sure if helpful but this thread does some more info about the problem)

$ make USE_SYSTEM_AUBIO=true make -C dpf/dgl make[1]: Entering directory '/home/pi/installed_local/ninjas2/dpf/dgl' Compiling src/Application.cpp cc1plus: error: unrecognized -mtune target: generic cc1plus: note: valid arguments are: arm2 arm250 arm3 arm6 arm60 arm600 arm610 arm620 arm7 arm7d arm7di arm70 arm700 arm700i arm710 arm720 arm710c arm7100 arm7500 arm7500fe arm7m arm7dm arm7dmi arm8 arm810 strongarm strongarm110 strongarm1100 strongarm1110 fa526 fa626 arm7tdmi arm7tdmi-s arm710t arm720t arm740t arm9 arm9tdmi arm920 arm920t arm922t arm940t ep9312 arm10tdmi arm1020t arm9e arm946e-s arm966e-s arm968e-s arm10e arm1020e arm1022e xscale iwmmxt iwmmxt2 fa606te fa626te fmp626 fa726te arm926ej-s arm1026ej-s arm1136j-s arm1136jf-s arm1176jz-s arm1176jzf-s mpcorenovfp mpcore arm1156t2-s arm1156t2f-s cortex-m1 cortex-m0 cortex-m0plus cortex-m1.small-multiply cortex-m0.small-multiply cortex-m0plus.small-multiply generic-armv7-a cortex-a5 cortex-a7 cortex-a8 cortex-a9 cortex-a12 cortex-a15 cortex-a17 cortex-r4 cortex-r4f cortex-r5 cortex-r7 cortex-r8 cortex-m7 cortex-m4 cortex-m3 marvell-pj4 cortex-a15.cortex-a7 cortex-a17.cortex-a7 cortex-a32 cortex-a35 cortex-a53 cortex-a57 cortex-a72 cortex-a73 exynos-m1 xgene1 cortex-a57.cortex-a53 cortex-a72.cortex-a53 cortex-a73.cortex-a35 cortex-a73.cortex-a53 cortex-a55 cortex-a75 cortex-a75.cortex-a55 cortex-m23 cortex-m33 cortex-r52 native make[1]: [Makefile:104: ../build/dgl/Application.cpp.o] Error 1 make[1]: Leaving directory '/home/pi/installed_local/ninjas2/dpf/dgl' make: [Makefile:33: libs] Error 2

even on a normal 'make' it ends up with the same error: cc1plus: error: unrecognized -mtune target: generic

JPenuchot commented 4 years ago

Again that's a bug that originated in DPF, and it was fixed in January but not merged into the branch ninjas2 is using.

https://github.com/DISTRHO/DPF/commit/de8ace2f3057fc033ee0477be9d524d3a344cd85

I guess you could simply remove the dpf folder and do a git pull https://github.com/DISTRHO/DPF to compile it on your RPi.

@rghvdberg the fork of DPF you rely on isn't active anymore, would it be possible to switch back to the original one at https://github.com/DISTRHO/DPF ?

rghvdberg commented 4 years ago

For lv2 this doesn't matter. Code in this from was edited to have sendNote() also work in vst and jack. Maybe in the meantime this is also in the main repo.

alignwaivers commented 4 years ago

I've separately cloned DPF and replaced the dpf from ninjas2 with it as @rghvdberg which allows it to build the lv2 which does work to be loaded in carla as a host but the gui doesn't work which renders it useless (unless there's a alternate way of loading samples beyond using the gui that i'm unaware of).

but if I try to pull directly

$ git pull https://github.com/DISTRHO/DPF From https://github.com/DISTRHO/DPF

  • branch HEAD -> FETCH_HEAD fatal: refusing to merge unrelated histories

I really REALLY appreciate the help, would be awesome to make this work, and I appreciate the efforts regardless

On Wed, Apr 8, 2020 at 11:54 AM rghvdberg notifications@github.com wrote:

For lv2 this doesn't matter. Code in this from was edited to have sendNote() also work in vst and jack. Maybe in the meantime this is also in the main repo.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/clearly-broken-software/ninjas2/issues/103#issuecomment-611131159, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGGZPCVV5NP4GKNOZNBIILDRLTB5TANCNFSM4KFZ73XA .

rghvdberg commented 4 years ago

dpf requires opengl, do you have the dependencies installed as described in the readme? If you do make in the dpf directory the dpf examples should be built. Check if these work ok. Let me point out that ninjas2 is designed to work with a computer + monitor + mouse. For other workflows you need a different solution.

JPenuchot commented 4 years ago

$ git pull https://github.com/DISTRHO/DPF From https://github.com/DISTRHO/DPF * branch HEAD -> FETCH_HEAD fatal: refusing to merge unrelated histories

I'm sorry I did a mistake here, I meant clone, not pull

EDIT:

git pull https://github.com/DISTRHO/DPF dpf

alignwaivers commented 4 years ago

Sorry I thought I mentioned this more clearly: I've tried cloning the main DPF branch into it but that's the only thing that helped me build, and all seems to lead to the same place: I can load the lv2 but when I try to load the gui it doesn't work. So maybe a GUI issue, but pretty convoluted. Thanks for trying though. Here's the output from carla's debug (i'm not sure what else to try besides ardour which crashes when I try to load it)

    assertion failure: “xWindow != 0” in file src/Window.cpp, line 288
    Carla assertion failure: “fProcess != nullptr” in file CarlaPluginBridge.cpp, line 127
    Carla assertion failure: “fProcess != nullptr” in file CarlaPluginBridge.cpp, line 127

and tried to run the standalone for kicks and giggles

    assertion failure: “xWindow != 0” in file src/Window.cpp, line 288
    Segmentation fault

and also @rghvdberg as I mentioned before built the DPF examples, but it's been a long process so I know it's hard to keep track of. Still awesome piece of software, just not looking great for my usage on the pi, oh well :)

JPenuchot commented 4 years ago

We'll get it to work, no worries. It's not a hard thing to fix, just some compiler flags in a well written Makefile, nothing that can't be dealt with :)

JPenuchot commented 4 years ago

I'll get myself a shower first then work on it

JPenuchot commented 4 years ago

@alignwaivers I think something got fixed recently, the DPF fork no longer has sse flags hardcoded for all platforms in its makefile. The build went perfectly on my Raspberry Pi 3 with a fresh clone of ninjas2, I think it should be OK for you as well

alignwaivers commented 4 years ago

Sweet, I really appreciate that. I'm guessing you're not on raspbian buster then? Even if not that is still very useful info, thank you!

JPenuchot commented 4 years ago

My RPi runs Arch, but it shouldn't matter at all :)

alignwaivers commented 4 years ago

Hmm. My friends have been trying to get me to install that forever hah. Now I might have the incentive

I tried it last night just to check though, still having the same issue.

JPenuchot commented 4 years ago

That's pretty weird, did you really make sure you have a fresh ninjas2 repo, and didn't barely touch it before running make ? Is it still because of the -msse2 flag when compiling aubio ? If that's the case you can simply remove the -msse -msse2 flags in dpf/Makefile.base.mk and it should do the trick, but it's pretty weird that you still have build issues though

seanjean3000 commented 4 years ago

I just started setting up a Pi 4 for production yesterday (2gb with Raspian Buster), and just on a whim searched 'beat slicer for linux' -- wasn't sure if I'd find anything, but then I found this! It looks great.

Unfortunately, I'm having the same problem as above. When I try make, I get "error: unrecognized -mtune target: generic" and the process fails. I get no binaries in ninjas2/bin/.

I have all the dependencies covered, and as I said, I just started setting this up yesterday so I think everything should be up to date.

Thought I would jump in here just to second alignwaivers' experience.

alignwaivers commented 4 years ago

Hah, thanks - I knew I wouldn't be the only one wanting to make this work! I did try with a fresh clone as well, and then proceeded to start working on installing arch in order to get a working version on the pi (given @JPenuchot indicated it worked and my friends have been trying to get my arch for awhile) . It is a finicky of a setup process as I was informed, but hopefully it's worth the hassle (once I find the time to deal with whatever issue I was having), then I can finally have a sample/splicer on the pi.

JPenuchot commented 4 years ago

It might be an issue related to the RPi 4 not having a compiler for the same architecture as the RPi 3, so you might run into the same issue even with Arch. What you can do right now however is tinker with the BASE_OPT variable in dpf/Makefile.base.mk at line 132, try to replace -mtune=generic with -mtune=native or simply remove it. It's just an optimization flag so removing it shouldn't affect you too much, especially considering the -O3 flag is already enabled.

seanjean3000 commented 4 years ago

Changing -mtune=generic to -mtune=native in dpf/Makefile.base.mk worked! Got my binaries and dropped them into /usr/lib/lv2, opened Carla and re-scanned for plugins, and there it is! No issues launching it.

Thanks @JPenuchot