Nicholas Clark:
# On Thu, Sep 05, 2002 at 07:03:00AM -0400, Dan Sugalski wrote:
# > 4) The *only* tools you will need to build parrot are a C compiler
# > environment and either a make tool or a shell
# 
# I believe we may be able to get away without a make tool or a shell.

The final build system has been speced out for a while.  It involves
three components:

        a) a bunch of platform-specific shell scripts (or whatever)
        b) a miniparrot that can run with *very* minimal config info
        c) a bunch of byte-compiled programs

Basically, you run your platform's shell script.  I use the term "shell
script" loosely--on Win32 it'll be a batch file, and on VMS it'll be in
DCL.  You get the idea.

Your platform's shell script drives the C compiler (which it may ask you
for path information on) to build miniparrot.  Miniparrot can run more
or less with ANSI C only--no platform specific bits.  The bytecode
swapper will have to do its tests at runtime.

Miniparrot's job is to ask the configuration questions or probe the
environment for them, generate any files that need to be generated
(config.h, has_header.h...), and drive the C compiler to build the final
Parrot.  (I also have a neat idea that we probe for Perl 5 and copy
stuff from Config.pm if it's there (or any other language with a similar
repository of build information)).

So, building Parrot ought to look something like this (for a Windows
user):

        c:\parrot> cd build
        c:\parrot\build> win32
        Are you using MS VC++? [yn] y
        <compiler crap cut out>
        Miniparrot build complete.
        Enter 'miniparrot build.pbc' to continue.
        c:\parrot\build> miniparrot build.pbc
        
        Parrot version 1.0 Build 1.0
        Copyright (C) 2002 Yet Another Society
        
        Hello, I'm Build.  My job is to poke and prod your system to
figure out 
        how to build Parrot, then build it for you.  The process is
mostly 
        automated--after the first couple questions, I can finish on my
        own--unless you've passed the '--ask' command-line flag, in
which case
        I'll ask you about pretty much everything.
        
        Preparing my internal data structures...done.
        Figuring out what kind of system I'm on...
        Win32?  This could be a bit tricky.
        done.
        Probing for C toolkit...
        I've found VC++ and GCC.
        Which of these toolkits should I use? [VC++]
        OK, I'll use the Microsoft tools.  Blech.
        done.
        Probing for languages with configuration info...
        You have Perl 5!  Sweet!
        Should I take configuration info from it? [y] 
        OK, I'll use some info from Perl 5.
        You have Python!  Sweet!
        Should I take configuration info from it? [y] 
        OK, I'll use some info from Python.
        done.
        Probing for data type sizes...done.
        <etc>
        Okay, I've finished the configuration stuff.  I will now start
building
        Parrot for you.
        <compiler crap cut out>
        Okay, Parrot is built.  To test Parrot, type 'miniparrot
build.pbc test'
        at a command prompt; to install it, type 'miniparrot build.pbc
install'.
        c:\parrot\build> 
        
--Brent Dax <[EMAIL PROTECTED]>
@roles=map {"Parrot $_"} qw(embedding regexen Configure)

"In other words, it's the 'Blow up this Entire Planet and Possibly One
or Two Others We Noticed on our Way Out Here' operator."
    --Damian Conway
        

Reply via email to