[comp.sources.d] perl 1.0 patch #1

lwall@devvax.JPL.NASA.GOV (Larry Wall) (01/23/88)

In article <8077@e.ms.uky.edu> david@ms.uky.edu (David Herron -- Resident
    E-mail Hack) writes:
: If I had something to apply it TO, I'd certainly apply it.
: 
: (Hey Rich!  wink wink, nudge nudge :-) :-) :-) :-) :-) :-) :-) :-)).

If you get impatient, and have Internet access, you can FTP it from
jpl-devvax.jpl.nasa.gov (128.149.8.43).  The 128.149.8.13 given in the
first patch was incorrect.  I challenge you to snarf perl and find a bug
before r$ posts the kits.  (Wink, wink, nudge, nudge :-)

Some of you have expressed interest in trying out metaconfig.  Well, here's
your big chance.  I'm not going to post it yet, but you can get it via
FTP from the same place.  It's actually part of a package called "dist".
This package is very useful in its current form, but I suspect it is going
to evolve considerably over the next year or so.  So give me some feedback
on how you think it should grow.

The dist kit has three parts:

1) A kit builder.  Generates MANIFEST file, packs kits semi-optimally, and
    shars the kits for you.

2) A patch generator.  I don't suggest you use this unless you are familiar
    with RCS.  You just say "pat filelist", where filelist is the list of
    files you changed, and it checks them all in, creating a branch as
    necessary, keeping all the locking straight.  Then it does your diffs
    for you, using either rcsdiff or your own diff, and then it builds and
    lets you edit the new patch.  It does all this even when some of the files
    are in subdirectories, which RCS isn't very smart about.

3) Metaconfig.  This is the hottest part of the package, and you may want
    this even if you don't want the other parts.  This package knows just
    about everything I know about portability to Unix systems.  Everything
    is driven off a set of Unit files, each of which is designed to find
    out one piece of information about the system on which your package will
    run.  The niftiest thing is that each of these units is self-contained:
    Each unit knows what cpp symbols and shell variables it defines, what
    other units it depends on, the definitions for the symbols and variables,
    the shell code to determine the correct value for the symbols and variables,
    and the code to insert into config.h so that your C programs know what's
    going on.  Here's what you do to use it: a) run makegloss to build a
    Glossary from all the units,  b) read the Glossary to see which variables
    and symbols metaconfig can determine for you, c) write your programs
    and scripts (including your Makefile generator) in terms of those variables
    and symbols, and d) run metaconfig, which will analyze your files and
    write a Configure script for them.  That's pretty much all you have to do.
    If you so desire you can write custom units for inclusion in Configure.

Please don't expect a polished product--if you don't read shell scripts and
README files, you don't want dist.  Dist is like a good road with mud on
both sides at the moment.  As long as you stay in the center of the road
you'll get where you want to go very quickly, but you'd better have a shovel
along just in case.

I'm not planning to mail this out to anyone unless you have a project you're
dying to use it on.  I figure I'll get plenty of beta testers who can ftp it.

Be sure to pick up any patches for the dist kit as well.  Here's the directory
structure for ~ftp.

    ftp/pub/perl.1.0
    ftp/pub/perl.1.0/kits
    ftp/pub/perl.1.0/patches
    ftp/pub/dist.1.0
    ftp/pub/dist.1.0/kits
    ftp/pub/dist.1.0/patches
    ftp/pub/warp.7.0
    ftp/pub/warp.7.0/kits
    ftp/pub/warp.7.0/patches

Of course, don't let dist or warp distract you from getting perl.  :-)

Larry Wall
lwall@jpl-devvax.jpl.nasa.gov

rick@seismo.CSS.GOV (Rick Adams) (01/24/88)

Impatient uunet customers can uucp it from uunet!~/pub/perl/*

---rick