[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [MacPerl] Making a standalone application.




On Tue, 26 Oct 1999, Chris Nandor wrote:

> At 17.22 -0500 1999.10.25, terry chay wrote:
> >	Basically I would like to present my MacPerl as a stand alone
> >application with the source code in the documentation. This way
> >people wouldn't need to install the MacPerl application in order to
> >run it. I am aware of the bloatware issue--the application just
> >contains the compiler and will still be dynamically compiled at
> >runtime.
<snip>
> 
> Get RuntimeBuilder.  It is on the http://www.macperl.com/ site and can
> probably be found by searching the MacPerl mailing list archives.

Agreed.  Since I was just working with it today, let me point out a gotcha
in RunTimeBuilder:
'use' or 'require' must be at the start of the line, ie the regex in
RunTimeBuilder is looking for /^use*/ or /^require*/.  That should knock
out the first level of problems.  I think it could safely be changed to
/^\w*use*/ and /^\w*require*/; am I missing an obvious reason why this
isn't done?  

But the second gotcha doesn't seem so simple.  RunTimeBuilder doesn't seem
to handle copying the shared libraries.  It has a "shared libs" folder,
but I couldn't seem to get my runtime to find a shlib until I duplicated
the exact same folder structure found in MacPerl.  Specifically, I needed
the Text::CSV_XS shlib, so I had to create (I'm doing this from memory, so
I hope I get this right) a "site_perl" folder in the same directory as the
runtime, then "MacPPC", "auto", "Text", and "CSV_XS".  The CSV_XS shlib
went inside the CSV_XS folder.  Similarly, I used StandardFile, so I
needed a top level "lib" directory (I think that's right), then "MacPPC",
"auto", "Mac", and "StandardFile".  This was a bit of a pain.

I hope these simple tidbits help someone else.

Two questions occurred to me.  The "missing thing" error msg showed me the
runtime's @INC, which included the "shared libs" folder.  Why couldn't the
runtime find the shared libs when I duplicated the structure underneath
"site_perl" and the "lib" folders inside "shared libs"?   Might it be
related to the fact that "shared libs" was a relative path and the others
were absolute paths?  I know about @INC, but how does MacPerl know about
all those other folders (auto from AutoLoader, I 'spose)?  There's
probably a pod on this, but the information is probably spread across many
pods.  Would someone "in the know" be willing to summarize?

Second question...could RunTimeBuilder be modified to work with shared
libs?  How does Perl know that a shared lib is needed?  Perhaps
RunTimeBuilder could look at the path of an included file and
automatically check for the existence of a corresponding MacPPC complement
file?  (Mac68K under 68K environment.  Speaking of which, is there a
simple test in MacPerl to know which environment we're working under?  Is
this an FAQ?)

I think I overran my two question mark...think of it as questions
1a,1b,1c, 2a,2b...    :)

--
MattLangford 


# ===== Want to unsubscribe from this list?
# ===== Send mail with body "unsubscribe" to macperl-request@macperl.org