Howdy, I worked on a *howto load and install externals tutorial* and put it up in here: https://puredata.info/docs/tutorials/FrontPage
Also find it in here https://sites.google.com/site/porres/Using%20Pd%20Externals.pdf?attredirects...
feel free to comment and give some feedbacks
cheers
On Don, 2017-03-02 at 01:03 -0300, Alexandre Torres Porres wrote:
Howdy, I worked on a howto load and install externals tutorial and put it up in here: https://puredata.info/docs/tutorials/FrontPage
Also find it in here https://sites.google.com/site/porres/Using%20Pd% 20Externals.pdf?attredirects=0&d=1
feel free to comment and give some feedbacks
Good work! Great coverage of aspects. Do you plan to convert the final draft into a wikipage? I guess this would ease collaboration on the long run.
My notes:
The global and application specific paths are dependent on how Pd and externals were installed. Everything that comes from the distribution/package manager goes to /usr/, while all self-compiled stuff goes to /usr/local (when intalled system-wide). As a user, you shouldn't never ever touch /usr/ directly.
Application-specific: /usr/lib/puredata/extra if installed via a package manager (apt-get) /usr/local/lib/pd/extra if compiled by yourself.
User-specific (needs to be created): ~/.local/lib/pd/extra (preferred since version Pd-0.47-1) ~/pd-externals (deprecated but still usable). - Global: /usr/lib/pd-externals (searched by Pd from package manager) /usr/local/lib/pd-externals (searched by used-installed Pd)
Different library layouts require different ways of loading. I'll try to put together a summary of the different layouts I found "in the wild".
How to load them:
[declare -stdpath libraryname]
Examples: * virtually anything from Pd-extended * iemnet * all abstractions libraries
Notes: It works for both, abstractions and externals, as long as each object has its own file and they're in a folder libraryname. Supposedly, the majority of libraries uses this layout.
How to load them:
[declare -stdlib libraryname]
Examples: * (can't think of any right now)
How to load them:
[declare -stdpath libraryname -stdlib libraryname]
Examples: * zexy (not from Pd-extended) * Gem
Notes: You can test above with zexy. You need both declarations so that you can load both [nop] and [dirac~]. Gem is a special animal again. It uses a trick internally and adds the path automatically. Even if it is a mix of abstractions and a multi- object external, you stil can load it with [declare -stdlib Gem].
[declare -stdpath libname -stdlib libname/lib1 -stdlib/lib2 [...]]
Examples: * iemlib
Note: If the multi-object external doesn't have the same name as the parent folder, you need to add libname/ prefix to -stdlib. If you, for instance, only [declare -stdpath iemlib], you can successfully load [hp4_butt~] because it is an abstraction of iemlib, but it throws an error to the Pd-console:
filter~ hp2c $1 $2 $3 $4 ... couldn't create
because it uses [filter~] from iemlib1 internally. So, the proper way to make [hp4_butt~] work is to use:
[declare -stdpath iemlib -stdlib iemlib/iemlib1]
Roman
On 2017-03-02 14:04, Roman Haefeli wrote:
Global: /usr/lib/pd-externals (searched by Pd from package manager) /usr/local/lib/pd-externals (searched by used-installed Pd)
this is wrong.
all Pd's search in /usr/local/lib/pd-externals regardless of how they were installed. the point of this directory is exactly to bridge between a package managed Pd and locally (aka user-) installed globally visibile externals.
fgmasdr IOhannes
On Don, 2017-03-02 at 14:41 +0100, IOhannes m zmoelnig wrote:
On 2017-03-02 14:04, Roman Haefeli wrote:
Global: /usr/lib/pd-externals (searched by Pd from package manager) /usr/local/lib/pd-externals (searched by used-installed Pd)
this is wrong.
all Pd's search in /usr/local/lib/pd-externals regardless of how they were installed. the point of this directory is exactly to bridge between a package managed Pd and locally (aka user-) installed globally visibile externals.
Really? I'm glad to hear that. I was using ugly symlinks believing there is no bridge. Good that it is documented now and sorry for being wrong about what was correct in the first place.
Roman
2017-03-02 10:04 GMT-03:00 Roman Haefeli reduzent@gmail.com:
Do you plan to convert the final draft into a wikipage?
sounds good
The global and application specific paths are dependent on how Pd and externals were installed.
Application-specific, of course... but global? are you sure?
2017-03-02 10:41 GMT-03:00 IOhannes m zmoelnig zmoelnig@iem.at:
On 2017-03-02 14:04, Roman Haefeli wrote:
Global: */usr/lib/pd-externals* (searched by Pd from package manager) */usr/local/lib/pd-externals* (searched by used-installed Pd)
this is wrong.
all Pd's search in* /usr/local/lib/pd-externals* regardless of how they were installed. the point of this directory is exactly to bridge between a package managed Pd and locally (aka user-) installed globally visibile externals.
ok, now I'm really confused... is this a real path? => */usr/lib/pd-externals* is it "another global" path? It doesn't seem to be...
all self-compiled stuff goes to /usr/local
sure, I got that right, didn't I?
Application-specific: /usr/lib/puredata/extra if installed via a package manager (apt-get)
well, I got /usr/lib/*pd*/extra instead over here...
How to load different library formats
yeah, I should put more examples!
anyway, I'd really to get all this information right and well documented, please help :)
thanks
On 03/02/2017 07:29 PM, Alexandre Torres Porres wrote:
all Pd's search in* /usr/local/lib/pd-externals* regardless of how they were installed. the point of this directory is exactly to bridge between a package managed Pd and locally (aka user-) installed globally visibile externals.
ok, now I'm really confused... is this a real path? => */usr/lib/pd-externals* is it "another global" path? It doesn't seem to be...
i trust you are confused. i don't understand what you are asking/implying/...
in any case: /usr/lib/pd-externals is not a standard-path. this was only part of romands confusion.
gfmards IOhannes
2017-03-02 16:21 GMT-03:00 IOhannes m zmölnig zmoelnig@iem.at:
/usr/lib/pd-externals is not a standard-path. this was only part of romands confusion.
cool, got it right then... ;)