<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
Hi all<br>
<br>
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 <span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;">(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.</span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;"><br>
</span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;">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.</span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;"><br>
</span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
CURRENT SITUATION:</div>
<div style="background-color: rgb(255, 255, 255);">
<ol style="">
<li style=""><font color="#000000" face="Calibri, Helvetica, sans-serif">Context relies heavily on externals, namely zexy, cyclone, else, iemguts, hcs, list-abs, iemmatrix, and flatgui.</font></li><li style=""><font color="#000000" face="Calibri, Helvetica, sans-serif">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]</font></li></ol>
<font color="#000000" face="Calibri, Helvetica, sans-serif">OBJECTIVES:</font></div>
<div style="background-color: rgb(255, 255, 255);">
<ol>
<li><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;">I want all of Context's
</span><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;">externals to be distributed and declared internally.</span></li><li><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;">For efficiency, I want only those externals which are used in the folder, not the whole library (otherwise it takes up around 38mb).</span></li><li><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;">For clarity, I want them organized by library in a special "ctx_externals" folder. So there will be one </span><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;">"ctx_externals/cyclone"
 folder containing only the cyclone externals I use, one "externals/else" folder, etc.</span><br>
</li></ol>
</div>
<div style="background-color: rgb(255, 255, 255);"><font color="#000000" face="Calibri, Helvetica, sans-serif"><br>
</font></div>
<div style="background-color: rgb(255, 255, 255);"><font color="#000000" face="Calibri, Helvetica, sans-serif">QUESTIONS:</font></div>
<div style="background-color: rgb(255, 255, 255);">
<ol>
<li><font color="#000000" face="Calibri, Helvetica, sans-serif">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?</font></li><li><font color="#000000" face="Calibri, Helvetica, sans-serif">Assuming that there is something wrong with the method outlined above, what is the proper use of [declare] in this instance?<b> [declare -lib ctx_externals/zexy -path ctx_externals/cyclone -path
 ctx_externals/else ...]</b> 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.</font></li><li><font color="#000000" face="Calibri, Helvetica, sans-serif">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.</font></li><li><font color="#000000" face="Calibri, Helvetica, sans-serif">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?</font></li><li><font color="#000000" face="Calibri, Helvetica, sans-serif">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?</font></li></ol>
</div>
<div style="background-color: rgb(255, 255, 255);"><span style="font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;">I expect that
 some of you will bring up the point that distributing externals along with an abstraction is bad form, as it </span><span style="font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;">might
 interfere with the user's own versions of the same externals. The </span><span style="font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;">solution we
 arrived at in the last thread was to </span><span style="font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;">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:</span></div>
<div style="background-color: rgb(255, 255, 255);"><span style="font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;"><br>
</span></div>
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div style="background-color: rgb(255, 255, 255);"><span style="font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;">6: If I replace <span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal;"> <b>[declare
 -lib</b></span><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal;"><b> ctx_externals/zexy -path</b></span><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal;"><b> ctx_externals/cyclone
 -path ctx_externals/else ...]</b> in the main Context file with <b>[declare -lib zexy -path cyclone -path else ...]</b>, 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?</span></span></div>
</blockquote>
<div>
<div style="background-color: rgb(255, 255, 255);"><span style="font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;"><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal;"><br>
</span></span></div>
</div>
<div style="background-color: rgb(255, 255, 255);"><span style="font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;"><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal;">Thanks
 for bearing with me here,</span></span></div>
<div style="background-color: rgb(255, 255, 255);"><span style="font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;"><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal;"><br>
</span></span></div>
<div style="background-color: rgb(255, 255, 255);"><span style="font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif;"><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal;">Liam</span></span></div>
</body>
</html>