2018-04-13 4:10 GMT-03:00 Liam Goodacre liamg_uw@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:
- 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:
- 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:
- 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
- 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
- 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
- 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
- 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@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/ listinfo/pd-list