This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove spurious LINT: directives
[metaconfig.git] / README
diff --git a/README b/README
index b6ad3b6..b805b4c 100644 (file)
--- a/README
+++ b/README
@@ -1,20 +1,44 @@
-Jarrko's How to build Configure tweaked by Nick.
+       Jarkko's How to build Configure tweaked by Nick.
+
+The Configure script and config_h.SH file in the Perl distribution are
+generated by a program called metaconfig.  Metaconfig was originally 
+written by Larry Wall, and was subsequently enhanced and maintained
+by Raphael Manfredi.
 
 You have presumably obtained the metaconfig from the repository e.g.
-p4 sync //depot/metaconfig/...
-or some other way to obtain this file.
+  p4 sync //depot/metaconfig/...
+(those are three literal dots) or some other way to obtain this file,
+like a complete compressed archive from the previous pumpkin.
 
 Normally this directory and perl directory are next to each other
 so ../perl will get you to perl and ../perl/../metaconfig will get you
 back here.
 
+Contents of this directory:
+
+    README:    This file.
+    U:         Metaconfig units used for buliding Perl's Configure
+    U.check:   Sample directory used for testing new metaconfig units.
+               see U.check/README for more information.
+    dist-3.0at70: 
+               dist-3.0 at patchlevel 70.  This is the final version released
+               by Raphael Manfredi.  Don't use it.  Instead, use ...
+    dist-3.0at70b:
+               dist-3.0 at patchlevel 70 with unofficial patches 'a' and 'b'
+               applied.  This version was never officially released, but
+               the patches are essential, so this is the version we use for 
+               perl.  Actually, I've also applied U/dist_patches/dist-p70c
+               to this tree.  If someone with perforce access wants to change
+               the name of the directory, that'd be fine.  Otherwise, it really 
+               doesn't matter.
+
 (a) You need to have dist installed so that you have metalint and metaconfig
     in your $PATH.
     The dist version used for perl is dist-3.0at70b in this directory.
     Unsurprisingly 'dist' uses (its) Configure to generate itself:
 
     cd dist-3.0at70b
-    chmod +w -R .     # We have derived files in perforce :-(
+    chmod -R +w .     # We have derived files in perforce :-(
     ./Configure
     make
     make install
@@ -36,11 +60,13 @@ back here.
      1) have a symlink to ../metaconfig/U called U
      2) have a symlink to ../metaconfig/.package called .package
      3) have a symlink to MANIFEST called MANIFEST.new
+     4) chmod +w Configure config_h.SH Porting/Glossary Porting/config*
 
 (c) Write the new unit as U/foo/bar.U (usually 'foo' is just 'perl',
-    but sometimes there's some more appropriate subdir of U)
+    but sometimes there's some more appropriate subdir of U.  See
+    U/README for a description of the various subdirectories.)
 
-(d) metalint to see nits: as opposed to lint, the gripings of
+(d) Run metalint to see nits: as opposed to lint, the gripings of
     metalint are usually serious :-) and need fixing
 
     Exceptions are lots of
@@ -57,23 +83,39 @@ back here.
 
 (f) metaconfig -m to regenerate Configure
 
-(g) The messy not-yet-automated part is that the knowledge of the new symbol
-    needs to be propagated to non-Configure lands like Win32, Netware,
-    VMS, VOS, ...  see previous Configure changes to see which are these
-    heathen lands
+(g) metaconfig does not deal with depends in config_h.SH, so some
+    reorganization is needed.
+
+    perl Porting/config_h.SH
+
+    will fix the ordering
+    
+(h) The messy not-yet-automated part is that the knowledge of the new symbol
+    needs to be propagated to non-Configure lands like Win32, WinCE, Netware,
+    VMS, VOS, EPOC, ...  see previous Configure changes to see which are these
+    heathen lands.  Files to take care of are
+    {win32,wince,NetWare}/config_[hH]*, (Win32, WinCE, NetWare),
+    configure.com (VMS), VOS/config* (since 5.9 VOS uses Configure, though),
+    epoc/config.sh (EPOC).  Depending on the kind of patch djgpp/config*
+    might also need adjusting (for example when adding/changing the list
+    of extensions)
 
     For Win32 the process is semi-automated - if you have a Win32
     machine to run dmake on ...
 
-(h) then there's the running of mksample to freshen the Porting/config*
-    and Porting/Glossary, but I can't remember where the 'mksample' came
-    from, could be part of 'dist'. You can skip this phase,
-    it's not essential, just good housekeeping.
-
-(i) make veryclean;sh Configure -des -Dusedevel;make all test
+(i) Edit U/mkglossary (right near the top) to point to where you keep
+    dist's standard metaconfig units as well as your perl-specific ones.
 
-(j) p4 add ../metaconfig/foo/bar.U when you are ready ...
+(j) Run U/mksample to freshen the Porting/config* and Porting/Glossary.
+    Adjust the various compile-time options (e.g. 64bit, threads) as
+    you see fit.
+    You can skip this phase, it's not essential, just good housekeeping.
 
-(k) p4 submit
+(k) make veryclean;sh Configure -des -Dusedevel;make all test
 
+(l) p4 add ../metaconfig/foo/bar.U when you are ready ...
 
+(m) p4 submit
+    IF your $EDITOR and/or $VISUAL start a background edit session
+    ('elvis -fork' or 'gvim'), be sure to set $P4EDITOR to an
+    editor call that is waited for.