Unable to add fluid_libmanipulation library to the startup preferences (Debian 12.1)

I’m on Debian 12.1

When trying to install fluid_libmanipulation library to the startup preferences, I get this error log:

invalid command name “.gui_preferences.content.frames.f1.listbox.box”
invalid command name “.gui_preferences.content.frames.f1.listbox.box”
while executing
“$mytoplevel.listbox.box index active”
(procedure “get_curidx” line 2)
invoked from within
“get_curidx $mytoplevel”
(procedure “::scrollbox::add_item” line 7)
invoked from within
“::scrollbox::add_item .gui_preferences.content.frames.f1 {}”
invoked from within
“.gui_preferences.content.frames.f1.actions.add_path invoke”
(“uplevel” body line 1)
invoked from within
“uplevel #0 [list $w invoke]”
(procedure “tk::ButtonUp” line 22)
invoked from within
“tk::ButtonUp .gui_preferences.content.frames.f1.actions.add_path”
(command bound to event)

From my understanding, these commands come from the file “fluid_libmanipulation.pd_linux”… Is it possible it is not adapted to my distribution ? Something like that happened to me with another PD library recently

Hello @Bazil_Muzik

I read this, and actually that looks like a tcltk error, which mean that would be your version of Pd. Are you using the official plain vanilla one, or anything else with another gui?

Hello @tremblap !

Thanks for your answer. I get this error on plain vanilla, version 0.54.0.

ok is your linux 64bit?

if yes, then we have made sure that compiling yourself is straightforward and that might sort the issue. I have ubuntu20 on my machine and it works from the download, and I know @rodrigo.constanzo has compiled for Bela so that is also possible. but i know there are binding issues with older OSes…

The pd/linux stuff I’ve done has been with @jarm’s compile, so it was a matter of getting those versions onto the Bela. I don’t really know much beyond that in terms of compilation and such.

Hello !
Thank you all for your answers. I must say I’m a bit lost between flucoma-pd, flocuma-core, etc.
Where do I start for compiling myself (I’m a relatively new Linux user) ? And yes, I’m on Linux 64-bit !
Regards

the beauty of the compilation process is that it will download everything for you (incuding core and docs and everything except what is on that list - cmake mostly

If you follow the instructions here, let me know where you get stalled, and I’ll help (and improve the instructions!)

Thanks a lot for your help !

So, I cloned the git repo for flucoma-pd, then created the “build” folder and cd to there, used cmake with the path where I cloned the repo, and finally used make install… And… nothing works haha !

I’m totally lost, I did it twice. First time I launched the install from the cloned repo, and not from build, so by doing it from the “build” folder I thought it might solve the issue, which well, wasn’t the case… Also I saw in the Readme file that I’m supposed to have a “release-packaging” after all that, and I’m not able to find it… I absolutely don’t understand the architecture I end up with, and also got 2 fatal errors at the end of make install (ofc I closed the terminal and forgot to copied them)…

Help ?

One step at a time.

  1. You clone the repo.

  2. you make sure you have cmake

  3. you make sure you have Pd

===
if that is all true, then you run cmake as it says, with the link to libPd, from the build folder.

cmake -DPD_PATH=</path/to/api> ..

would be in may case

cmake -DPD_PATH=/Application/Pd-0.54-0.app/Contents/Resources/ ..

because on Mac the Pd api is shipped within the application. On Linux I don’t know but it can’t be very far.

that cmake should either work or give you errors. if the latter, paste them here and we’ll see!

So, what is meant by path to API is path to libpd ?

I located an empty libpd folder on my computer, and included it in -DPD_PATH… I still got this fatal error:

Building C object CMakeFiles/fluid.waveform.dir/src/fluid.waveform/fluid.waveform.c.o
cc1: warning: command-line option ‘-fpermissive’ is valid for C++/ObjC++ but not for C
/home/basile/flucoma-pd/src/fluid.waveform/fluid.waveform.c:21:10: fatal error: g_canvas.h: Aucun fichier ou dossier de ce type
21 | #include “g_canvas.h”
| ^~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/fluid.waveform.dir/build.make:76 : CMakeFiles/fluid.waveform.dir/src/fluid.waveform/fluid.waveform.c.o] Erreur 1
make[1]: *** [CMakeFiles/Makefile2:2012 : CMakeFiles/fluid.waveform.dir/all] Erreur 2
make: *** [Makefile:136 : all] Erreur 2

Next to the libpd folder, there is a pd folder, where the file g_ganvas.h actually is. So I retried with -DPD_PATH targetting this folder instead… Still the same fatal error…

On my computer there are different places that contains stuff for PD. E.g. some things are in /usr/lib/, others like libpd are in /usr/local/include/, and libraries I install from Dekken go to Documents/pd/externals (and here only). As far as I can tell, I haven’t such thing as an API folder where “everything” is, like the /Content/Ressources/ you mention.

yes that is your problem - for any pd external one need to point at the Pd code so the external knows ‘how to speak’ to the application.

On Linux, I don’t have a running install now, so I cannot say off the top of my head where it lies. I think you have to download pd’s source (again a single git command) but maybe @weefuzzy remembers - otherwise I’ll be able to tell you tomorrow when I get back in front of my working linux…

Haaa ok, at least something makes sense for me haha

Ok let’s wait and see what’s the solution :slight_smile: I won’t be home a lot this week-end so probably won’t be able to check before next monday !

I think all that’s required on Linux is to grab a PD source distribution and point at its root folder.

If one looks at the commands spat out by our github runners, that’s what they do:

  git clone https://github.com/pure-data/pure-data.git sdk
Cloning into 'sdk'...
  cmake -GNinja -DPD_PATH=../sdk <some other stuff>  ..

So that’s cloning the PD source into a directory called sdk. You don’t have to do that, of course (and you obviously don’t have to do it every time!)

1 Like

Ok this time it worked perfectly :slight_smile: So yeah, things would maybe be easier if it was mentioned somewhere that one needs the pd source code, which is then used for -DPD_PATH. The “<path/to/api>” thing doesn’t make it really obvious, at least for someone like me who rarely builds from scratch (especially pd libraries which are done more and more through dekken).

Oh by the way, I saw there’s a mistake in the examples: every sound files are searched in a “/help/media” folder which doesn’t exist. They all are in “/media/” (no “help” folder in the final constructed project).

Anyway, thanks a lot for your help !

1 Like

the folder thing is strange… it might be a packaging thing, I’ll check

It’s possible those docs might have been written in a bit of a hurry! :grimacing: We can definitely improve that!

(and yeah, there’s a bunch of stuff that one just starts taking for granted with the scar tissue of doing a lot of C/C++ building and forgets is non-obvious to start with…)

2 Likes