1. Euphoria Prerequiste Manager

Sorry about that last post, hit the Enter key.

I've got an idea that I'd like to throw out there.  Last week I had 
someone ask me about the iSeries Toolbox that I've been working on.  
This individual wanted to try some of the examples but was having 
problems finding include files that are a part of Win32Lib (no problem 
of yours Derek, I just couldn't explain it in a way that he could 
understand).  I tried several times to explain to him where to find 
Win32Lib and where he should place them on his PC.  He has since stopped 
emailing me and my guess is he got frustrated and gave up.   I don't 
think this scenario is isolated.  I don't include Win32Lib as part of 
the toolbox so there's not multiple copies floating around.

Since so many of our contributions rely on other user's contributions we 
need a way to make it easy for the novice (and veterans for that matter) 
to find, download and install prerequisite packages.  What I'm proposing 
is a community created/supported system called "Euphoria Prerequisite 
Manager".   Here's the scenario:

* I create a Euphoria include file that lets you send HTML pages to cell 
phones (since we're pretending, I wrote this in 10 minutes :) ).  I also 
have documentation and a Win32Lib example.  My "package" requires 
Win32Lib, words.e by Bernie Ryan and a sockets package.
* I have a directory on my PC that contains all the files for my nifty 
new software (except the prerequisites).
* I now want to share my vast knowledge of cell phones with the 
community.  Included in the Euphoria/bin directory is a program that 
will let me create a package definition, which defines: package name, 
package version, author, date, time, etc.  Also in a definition is a 
mechanism to let me define three types of files: include files, 
documentation files and example files.  I also can define which other 
packages are prerequisites to my package (Win32Lib, words.e, sockets, 
etc.)  A package definition will be an .edb file containing all of the 
information, including all files.
* I go to the RDS web site, go to the submission form and point to the 
.edb package definition file.  RDS validates the data and adds to the 
master package definition file.
* Interested user now wants to try my cell phone package.  He goes to 
the recent contributions page and selects my package.  What he/she gets 
is a file that contains my package and all prerequisites as I have 
defined.
* Interested user now runs a program in Euphoria/bin that extracts the 
packages.  For each package, the program asks the user where the 
directory that I created should be extraced on their PC (I would choose 
C:\EuTools since that's where all of my user contributed files are).  
The program would also ask where the include files should be placed and 
defaults the location to 1) first directory in EUINC 2) include 
directory in the EUDIR variable.
* Interested user can now run my program and he/she does not have to 
find all the prerequisites manually.

Okay, don't run off scared!  I know it sounds like a lot.  Fact is, this 
will REQUIRE the cooperation of the community AND RDS.  What we will 
gain is easier distribution/management of user-contributed files.  I 
think this will also require us to create our own 
compression/decompression routine for the packages.  We can't assume 
that everyone has WinZip or equivalent.

There's still a TON of details to work out.  Unfortunately, I can't do 
all the work myself.  I would welcome any comments, suggestions or "what 
the heck are you thinking!"

Jonas

new topic     » topic index » view message » categorize

2. Re: Euphoria Prerequiste Manager

> This individual wanted to try some of the examples but was having
> problems finding include files that are a part of Win32Lib (no problem
> of yours Derek, I just couldn't explain it in a way that he could
> understand).

If it's just for testing's sake, why not provide him with binded code (an
.exe)?

new topic     » goto parent     » topic index » view message » categorize

3. Re: Euphoria Prerequiste Manager

> Here's another one: I've added a few routines to Win32Lib.ew myself and
> require the modified file in certain programs I've worked on.  How would
> we handle that?

Can you put your modified code into a Win32Lib-Jonas.ew file? How does Derek
recommend adding custom code to Win32Lib without affecting the base library?

new topic     » goto parent     » topic index » view message » categorize

4. Re: Euphoria Prerequiste Manager

On Thu, 25 Sep 2003 15:42:09 +0000, Jonas  Temple <jtemple at yhti.net>
wrote:

<snip>
> I don't include Win32Lib
ditto.
>What I'm proposing=20
>is a community created/supported system called "Euphoria Prerequisite=20
>Manager".
Sounds like an interesting project.

<snip>
>* I have a directory on my PC that contains all the files for my nifty=20
>new software (except the prerequisites).
I could craft a package manager which lets you develop on your
existing setup, then can be run against the main source & generates a
list of include files & the directories they live in. Other files
(databases, bitmaps etc) could be listed from the initial directory
with checkboxes, and the yes/no's saved between releases.

>A package definition will be an .edb file containing all of the=20
>information, including all files.
I think there needs to be a strong distinction between an application
package definition, which should only be distributed with the
application itself, and a library package definition, which records
available versions etc and is updated infrequently (eg monthly).
See my plan, below

>* I go to the RDS web site, go to the submission form and point to the=20
>.edb package definition file.  RDS validates the data and adds to the=20
>master package definition file.
I think you need only do that for libraries, and although we might
hope Rob will volunteer, we shouldn't assume he will. There's a url
issue in my master plan, see below.

>* Interested user now wants to try my cell phone package.  He goes to=20
>the recent contributions page and selects my package.  What he/she gets=20
>is a file that contains my package and all prerequisites as I have=20
>defined.
=46irst sticky point. Is that zipped? See my plan below.

>* Interested user now runs a program in Euphoria/bin that extracts the=20
>packages.  For each package, the program asks the user where the=20
>directory that I created should be extraced on their PC (I would choose=20
>C:\EuTools since that's where all of my user contributed files are). =20
>The program would also ask where the include files should be placed and=20
>defaults the location to 1) first directory in EUINC 2) include=20
>directory in the EUDIR variable.
>* Interested user can now run my program and he/she does not have to=20
>find all the prerequisites manually.
>
>Okay, don't run off scared!  I know it sounds like a lot.  Fact is, this=
=20
>will REQUIRE the cooperation of the community AND RDS.  What we will=20
>gain is easier distribution/management of user-contributed files.=20

>I think this will also require us to create our own=20
>compression/decompression routine for the packages.  We can't assume=20
>that everyone has WinZip or equivalent.
Euman has posted a little wrapper for lz32.dll on his h20 site, and
claims to have tested it against the standard windows compress
utility. That may be the best starting point. I'll assume we go with
this and call it an lz file from now on.

>
OK here's an outline plan:
<obviously open to severe criticism: first draft 'n all>

1) The install manager.
We write a smallish standalone executable (say 400K maximum, which is
between 40 and 80 seconds download on a 56K modem). It won't be zipped
(I think that only saves 5-10% anyway on an executable).  This program
needs a url (which is almost certainly a file of all the other urls,
the first of which is the requirements list).

This is the main trick I haven't worked out (that url), maybe Rob
could serve a patched copy of a standard program from the rds server,
that is, if we do most of the groundwork...?

This program can check to see if Euphoria is installed (if needed) and
perhaps perform a few sanity checks on it. It can scan round the
EUDIR/include and EUINC paths and see what it can check off the list.
It can then prompt for an install directory and begin the process of
unpacking the needed files there.

=46inally, it can invoke the main program when everything is done.


2) The library package info.
This list is needed most at application package time.
One great feature would be that the installer can compare the
historical requirements/versions against the current list, and pop-up
warnings if any files are no longer available, or have been replaced
by more recent versions (which implies the application should have
been tested and re-packaged against them).

This begs the question of how this is built & how it is maintained.
Obviously, a library writer must be able to update details, as can an
application developer needing to use a five year old include, as can a
user reporting that an include file is no longer available online.
Sure, I could hack Peter Blue's web server and write a web front-end
to semi-automate the process, but I doubt anyone would seriously want
such served on this particular pile of junk. Other choices?

Remember (in my scheme of things) this is simply a repository for info
which would otherwise get forgotten, not a bleeding-edge style thing.
If you need, this week, to use a lib released last week, that's kind
of a different matter, and you best deal with that yourself.


3) Decisions, decisions.
Where do we put stuff when we install it?
I think we have four clear choices:
a) bung it all it EUDIR/include (yuk).
b) create new directories under the EUINC variable and hope it don't
get too long (can't remember how many characters you're allowed)
c) store them in EUDIR/managed/library/version, but the install
manager simply dumps a copy of every required file in the local
directory.
d) as c), but not files available in the EUDIR/include or EUINC
directories. However that's the same as dll hell.

I vote for c), since, really, they tend to be tiny.
Maybe an option for d), with a program to re-check stuff.


4)The package builder.
(There are several other examples of this kind of processing in the
archives), I could easily amend my EUBNF program to parse a complete
project and during the process save a list of referenced files. It's a
bit slow (IIRC 80 secs for win32lib, 3 mins for Judith's IDE; though
you can possibly ignore that if you are not using a 5 year old heap of
junk like I am). However, I may have more success with literal files,
not that it will ever interpret non-literal loads.

The same list format would be used for application package definitions
and library package definitions.


I might have missed a whole step or two there, but I've run out of
steam. Unless I'm seriously missing something, I think I've got most
of this already sorted in my head, bar that initial url. Lots and lots
of details to fill out, of course. Some food for thought, I hope.

Pete

new topic     » goto parent     » topic index » view message » categorize

5. Re: Euphoria Prerequiste Manager

On Thu, 25 Sep 2003 14:36:51 -0400, Bernie Ryan
<xotron at bluefrognet.net> wrote:

>   What happens if someone updates a file and breaks the code.
Good question. In my other (lengthy!) post, I didn't explain some of
my thinking behind that. When the deep source-level scan happens
(which will happen both on the library developers machine [or someone
post-logging such info], and on the application developers machine),
it should record every file date/time/size.

If we go with option c) [see the really lengthy post], it will restore
(maybe I should say install) the target directory with the correct
copies of all the needed files, as present on the developers machine
at the point they packaged the application. Hence if they used
win32lib 0.59.1 but tk_maths.e from 0.57.9, then (despite Derek's
horror, but that was what the application was built and tested with),
that is what will end up in their local directory.

OTOH, Derek (just as an example) might like the idea of knowing, for
certain, whether an app is or is not using a full & proper version of
win32lib.

Also, since I'm a bit of a win32lib hacker, it'll tell me instantly
that no-one will ever be able to run my code because some of the
modded files I'm using are not publicly available...

>   If you ship the extra files with your code then you know they will =
work.
Very true. However discussing this further might yield a different
problem and hopefully its solution: downloading subtly conflicting
libraries. I'm sure I'm not alone in having downloaded contributions,
failed to get them to work, deleted them, and wasted time rewriting
them from scratch. But of course they must have worked once.

Another different problem this might solve is recording the fact that
a particular contribution is known to work on say win98 and known to
not work on winXP, or vice versa.

>   There is an install file that is in bin that could be use as a guide
>   to write an install to put the needed programs in the correct =
locations.
Maybe what is wanted (not easy) is a way to auto-generate the
equivalent from the current development environment.

Regards,
Pete

new topic     » goto parent     » topic index » view message » categorize

6. Re: Euphoria Prerequiste Manager

On Thu, 25 Sep 2003 14:14:47 -0500 (09/26/03 05:14:47)
, C. K. Lester <cklester at yahoo.com> wrote:

>
>
>> Here's another one: I've added a few routines to Win32Lib.ew myself and
>> require the modified file in certain programs I've worked on.  How would
>> we handle that?
>
> Can you put your modified code into a Win32Lib-Jonas.ew file? How does 
> Derek
> recommend adding custom code to Win32Lib without affecting the base 
> library?
>

I have plans for making this easier. Currently ou can get read-only access 
to most internal structures.

-- 

cheers,
Derek Parnell

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu