[PD] How to declare custom libraries in abstractions

Alexandre Torres Porres porres at gmail.com
Fri Apr 13 13:21:55 CEST 2018


2018-04-13 4:10 GMT-03:00 Liam Goodacre <liamg_uw at hotmail.com>:

> Hi all
>
> You might remember from last year that I wanted to distribute externals
> along with an abstraction library (Context) so that new users can download
> and get it working in as few clicks as possible, without having to download
> a bunch of extra libraries (see the thread: "[PD] repackaging externals
> on Deken"). This is in response to many users struggling with the
> installation process, and it would seem important if Context is every going
> to go up on Deken.
>
> This week, I've finally gotten around to trying to implement this, but I'm
> getting hopelessly confused, since I don't have a good understanding of how
> [declare] works and it's function seems to be changing anyway. I've
> attempted to outline my questions as clearly as possible, and I would
> appreciate if people could reply to them individually. I'm not trying to be
> stubborn, it's just that I'm struggling with my understanding here.
>
> CURRENT SITUATION:
>
>    1. Context relies heavily on externals, namely zexy, cyclone, else,
>    iemguts, hcs, list-abs, iemmatrix, and flatgui.
>    2. I have everywhere called externals using the [library/object]
>    method, ie. [cyclone/iter], avoiding the use of [declare], because I'm
>    afraid of it. The only time I've use declare is with [declare -stdlib zexy]
>
> did you know? there's a way to load zexy in the patch as an external, and
no need to use [declare -stdlib/-lib], this woks if there is a compiled
external like [zexy]  with all classes, this works for cyclone too. But
this is not true for every library.


> OBJECTIVES:
>
>    1. I want all of Context's externals to be distributed and declared
>    internally.
>    2. For efficiency, I want only those externals which are used in the
>    folder, not the whole library (otherwise it takes up around 38mb).
>    3. For clarity, I want them organized by library in a special
>    "ctx_externals" folder. So there will be one "ctx_externals/cyclone"
>    folder containing only the cyclone externals I use, one "externals/else"
>    folder, etc.
>
>
> QUESTIONS:
>
>    1. The easiest way to achieve this would just be to declare them in
>    the object names, ie. [ctx_externals/cyclone/iter]. What is wrong with
>    doing it this way?
>
>
 distributing externals along with an abstraction is bad form like you
said, in my opinion

>
>    1. Assuming that there is something wrong with the method outlined
>    above, what is the proper use of [declare] in this instance?* [declare
>    -lib ctx_externals/zexy -path ctx_externals/cyclone -path
>    ctx_externals/else ...]* seems to work for me here, but I know that
>    the use of -path and -lib is changing, so I just want to be sure.
>
> current behaviour of [declare -path] works for objects in paths related to
the patch, so yeah, this works. And this won't change


>
>    1. Again assuming that 1 is wrong, do I need to remove the "library/"
>    from each of the objects in the patch after using [declare]? (Ie. so
>    [cyclone/iter] becomes just [iter]). It seems to work with the path still
>    specified, but I don't know if this is altering the behavior. Removing the
>    paths in the objects would be a hassle, but I'll do it if there is a reason.
>
>
no reason to remove them, no technical issue, and you'd make a mess and mix
up all externals, which is bad


>
>    1. How many different versions of each external library do I need to
>    provide to cover all possible uses? Windows, Linux & Mac = 3 versions. Do I
>    need to also release one for 32bit and one for 64bit, = 6 versions?
>
> yeah, as much as you can, which is part of why 1 is bad


>
>    1. Is it OK just to put all of these different versions in the same
>    folder, so that "ctx_externals/cyclone" contains 3 x each external, one for
>    each OS? Or will this create problems?
>
>
it is ok



> I expect that some of you will bring up the point that distributing
> externals along with an abstraction is bad form, as it might interfere
> with the user's own versions of the same externals. The solution we
> arrived at in the last thread was to let the user decide whether to have
> Context provide its own externals (basic), or whether to provide them
> manually (advanced). This is what I intend to achieve, which leads me to
> the next question:
>
> 6: If I replace  *[declare -lib** ctx_externals/zexy -path** ctx_externals/cyclone
> -path ctx_externals/else ...]* in the main Context file with *[declare
> -lib zexy -path cyclone -path else ...]*, will it then abandon the
> repackaged externals and look instead for whatever externals the user has
> installed?
>
>
it won't work with externals the user has installed... YET, see
https://github.com/pure-data/pure-data/pull/205


> If not this, then what use of [declare] will switch back to the standard
> behavior?
>
>
>
I dont understand this question


> Thanks for bearing with me here,
>
> Liam
>
> _______________________________________________
> Pd-list at lists.iem.at mailing list
> UNSUBSCRIBE and account-management -> https://lists.puredata.info/
> listinfo/pd-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20180413/88a8651c/attachment.html>


More information about the Pd-list mailing list