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]

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?
  2.  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.
  3.  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.
  4.  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?
  5.  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?

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? If not this, 
then what use of [declare] will switch back to the standard behavior?

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

Reply via email to