[PD-dev] libpd search paths

Joseph Larralde joseph.larralde at gmail.com
Fri Feb 15 18:52:23 CET 2019


Ok, I finally got the addon to compile and run correctly (tests passed !)
The answer was simple : just use the master branch of libpd.
I started tweaking the Makefile of v0.11.0 to include g_undo.c (which I 
noticed was containing the canvas_undo_undo function) in the sources but 
it was not sufficient.
So I grabbed the master branch after seeing it seemed more up-to-date, 
and voilà.
I still need to test this local version with the node project that loads 
externals, but at least I have my own working local version which I can 
modify at will.

Thanks again for the help, I'll let you know how this goes with externals.
Joseph

Le 15/02/19 à 15:11, Joseph Larralde a écrit :
> For the moment I'm using the default Makefile of libpd (version tagged 
> 0.11.0), which makes use of the -DHAVE_LIBDL flag.
> It can't find the HAVE_LIBPD definition anywhere, though ... is this 
> normal ?
> Sorry for my lack of knowledge of autotools, makefile, etc, but should 
> I add `HAVE_LIBPD =` at the beginning of the Makefile ? (e.g. after 
> `LIBPD_IMPLIB =` and `LIBPD_DEF =` lines ?)
> Or should it be added to the cflags with -DHAVE_LIBPD ?
>
> I added both and the addon builds fine (I got rid of the char * 
> related errors by adding the -fpermissive flag), but I still get stuck 
> when trying to run the js automated tests :
> they fail with an `undefined symbol` error, the undefined symbol being 
> `canvas_undo_undo`.
> Sounds familiar to anybody ?
> I have no idea how to solve this ...
>
> Thanks,
> Joseph
>
> Le 14/02/19 à 14:32, Dan Wilcox a écrit :
>> If you're building libpd via a custom Makefile, see the flags used in 
>> the libpd Makefile. Also, if you're using the libpd Makefile, 
>> double-check that HAVE_LIBPD is being defined.
>>
>> On Thu, Feb 14, 2019 at 2:30 PM Joseph Larralde 
>> <joseph.larralde at gmail.com <mailto:joseph.larralde at gmail.com>> wrote:
>>
>>     Thank you Dan for your explanation.
>>     And thanks everyone for helping.
>>
>>     Yesterday I tried to recompile the node addon to use it locally
>>     but got into other trouble.
>>     I first recompiled libpd with MULTI=false after Christof's
>>     suggestion (to enable the PDINSTANCE flag) but node-gyp was the
>>     first wall I was still hitting.
>>     It seems there are still some slight updates I need to do in the
>>     addon's code (I got some char * vs const char * error).
>>     Your 3rd point makes obvious sense and I'll try this in the first
>>     place today.
>>
>>     Joseph
>>
>>     Le 14/02/19 à 13:07, Dan Wilcox a écrit :
>>>     A few things:
>>>
>>>     1. libpd does not use any paths, settings, audio/midi backends,
>>>     etc from desktop pd. It is only the core and less than "pd
>>>     without the gui." This is by design as it makes no assumptions
>>>     about the environment since it can be running in all manner of
>>>     places. This means it will only search paths relative to an
>>>     opened patch and those added explicitly by
>>>     llibpd_add_to_search_path().
>>>
>>>     2. Loading an external, whether it was compiled against 0.47 or
>>>     0.49 should work as, largely, the pd API has not changed that much.
>>>
>>>     3. libpd needs to be built with -DHAVE_LIBDL in order to be able
>>>     to load separate, precompiled externals.
>>>
>>>     4. Some environments do *not* allow loading dynamic libraries
>>>     for legal/security reasons, ie. iOS. I don't this is the
>>>     problem, but it's good to know...
>>>
>>>     I image you're issue is more to do with 3.
>>>
>>>         Message: 1
>>>         Date: Wed, 13 Feb 2019 15:04:19 +0100
>>>         From: Joseph Larralde <joseph.larralde at gmail.com
>>>         <mailto:joseph.larralde at gmail.com>>
>>>         To: Giulio Moro <giuliomoro at yahoo.it
>>>         <mailto:giuliomoro at yahoo.it>>, Lucas Cordiviola
>>>                 <lucarda27 at hotmail.com
>>>         <mailto:lucarda27 at hotmail.com>>, pd-dev <pd-dev at lists.iem.at
>>>         <mailto:pd-dev at lists.iem.at>>
>>>         Subject: Re: [PD-dev] libpd search paths
>>>         Message-ID: <2354c1c4-e6db-9143-1402-76dcd37b43a8 at gmail.com
>>>         <mailto:2354c1c4-e6db-9143-1402-76dcd37b43a8 at gmail.com>>
>>>         Content-Type: text/plain; charset="utf-8"; Format="flowed"
>>>
>>>         Mmmh you might have found the clue ...
>>>         Actually I built the externals against pd version 0.49-0 and
>>>         it makes
>>>         sense that they load properly with the same version.
>>>         node-libpd comes with an arm libpd binary which seems to
>>>         come from an
>>>         older version of pd (added 1 year ago).
>>>         I can already tell that it's not an architecture issue because
>>>         everything is working on my pi : the addon is loading and
>>>         running
>>>         abstractions when used in a node program, and pd is loading
>>>         and running
>>>         my externals.
>>>         Only loading my externals from node-libpd doesn't work.
>>>         Still trying to get a local version of node-libpd to work
>>>         ... then I'll
>>>         replace the libpd.so with one that I'll build from the
>>>         latest version.
>>>         I can't see another explanation.
>>>         Do you know something about incompatibilities between
>>>         different versions
>>>         of pd ?
>>>         The libpd.so used by the addon is probably not older than 0.47
>>>
>>>
>>>
>>>     -- 
>>>     Dan Wilcox
>>>     @danomatika
>>>     danomatika.com <http://danomatika.com>
>>>     robotcowboy.com <http://robotcowboy.com>
>>
>>
>>
>> -- 
>> Dan Wilcox
>> @danomatika
>> danomatika.com <http://danomatika.com>
>> robotcowboy.com <http://robotcowboy.com>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-dev/attachments/20190215/5cf0d345/attachment-0001.html>


More information about the Pd-dev mailing list