Perl5 Metaconfig Units
Copyright (c) 1996-1998, Andy Dougherty
+ Copyright (c) 1999-2011, H.Merijn Brand
All rights reserved.
-These units are the ones I used to build Configure and config_h.SH
+These units are the ones used to build Configure and config_h.SH
in the Perl5 distribution.
-The Configure script and config_h.SH file in the Perl distribution are
-generated by a program called metaconfig. To run metaconfig, you will
-need the full dist 3.0 distribution, maintained by Raphael Manfredi.
-As of this writing, the current version is dist3.0, patchlevel 70.
-Dist version dist-3.0@70.tar.gz is available on CPAN (the Comprehensive
-Perl Archive Network) as
-<http://www.perl.com/perl/CPAN/authors/id/RAM/dist-3.0@70.tar.gz>.
+metaconfig will first look in its standard locations (specified when you
+installed dist). It will then recurse through the 'U' subdirectory
+and find any additional "private" units. Private units override
+standard ones supplied with metaconfig.
-Instructions:
+Files in this directory:
-1. Unpack the full perl5 sources. Execute the following command
+README
+ This file.
- chmod +w Configure config_h.SH Porting/Glossary Porting/config*
+Glossary.patch
+ The standard dist units contain some strings that make pod2man
+ complain. This patch silences those warnings. As new units are
+ added and Configure is regenerated, this patch may need more and more
+ 'fuzz' to be applied. It should be freshly regenerated every once
+ in a while. See also mkgloss.pl
-2. Unpack the archive containing this file in the perl5 source
- directory. This will create a directory 'U' under the perl5
- sources. That directory will contain the metaconfig units for perl5.
- This will also create two files in the perl5 source tree:
- MANIFEST.new and .package.
+ln-all.pl
+ Re-generate the all/ folder
-3. Apply any patches to perl in the U/perl_patches directory.
- (This may well be empty.)
+mkglossary
+ A script to regenerate Porting/Glossary. You have to manually
+ edit the top of the script to point the location of your metaconfig
+ units. It is called automatically by 'mksample'. See also mkgloss.pl
-4a. Obtain dist-3.0pl70.
+mkgloss.pl
+ A perl script that calls U/mkglossary from the perl source tree, sorts
+ the list of symbols, and applies the patch mentioned in Glossary.patch.
+ When called on its own, redirect the output to a temporary file, and
+ compare that file to Porting/Glossary before applying.
-4b. Apply any patches to dist under the U/dist_patches subdirectory.
+mksample
+ A script to regenerate Porting/config.sh and Porting/config.H.
+ It also calls mkglossary, if necessary.
-4c. Install dist.
-
-5. From your main perl5 source directory, run packinit to
- regenerate the .package file. IMPORTANT: Change the name and
- address of the maintainer to your own name and address. I don't
- want bug reports intended for you coming to me.
-
-6. From your main perl5 source directory, run
-
- metaconfig -m
-
-7. Edit U/mkglossary to point to your dist-3.0pl70 location
- (See comments at the top.)
-
-8. Run the U/mksample script to update the contents of the Porting/
- subdirectory.
-
-9. Let me know about any changes, corrections, or enhancements.
-
-Things to watch out for:
-
-1. The Configure in 5.005 is a hand-patched version of that supplied
- with perl5.004_74 or so. Most of the patches had to do with
- supporting MPE/iX and EBCDIC systems. I have re-integrated most
- of the changes back into metaconfig, but I don't really undertand
- why MPE/iX needed some of the patches, so I may have missed
- something important. I did try to flag questionable changes in
- the individual units.
-
-2. Future support of better random number generators should probably
- start with the randfunc.U unit included here. It's currently
- broken, but well commented and probably a good place to start.
-
-Descriptions:
+Subdirectories:
The units and other related files have been broken up into the following
-directories:
+directories.
+
+a_dvisory/
+ These are units that have to go first in the generated config_h.SH.
+ A word of explanation: Configure and config_h.SH are generated from 'Units'
+ (the *.U files). Files indicate dependencies (using make(1)), and
+ Configure is built to follow those dependencies. However, config_h.SH
+ is simply built by putting all the units in alphabetical order and
+ extracting the relevant lines. (This could be fixed, I suppose, but
+ it wasn't trivial the one time I looked.)
+ The a_dvisory/ directory, then, is a place to put units that need
+ to be early in config_h.SH. (Most units are self-contained
+ and ought to be able to go anywhere. However, some things, like
+ byteorder, need to have the #defines from multiarch available.)
acl/
This is an old patch to begin to detect and use ACL (access
control list) file protection schemes.
+all/
+ A folder that conveniently holds symbolic links to all the modules
+ that are used to build the current Configure and config_h.SH.
+
compline/
These are similar to the standard units, but I have modified them
- to have a more uniform compile command line, usually using the new
- Compile.U unit. I have submitted these for inclusion into the
- regular dist distribution. (The ccflags.U unit is actually
- perl-specific since it mentions -DDEBUGGING and -DPOSIX_SOURCE,
- but that's the only place it is perl-specific.)
+ to have a more uniform compile command line, usually using the
+ new Compile.U unit. (The ccflags.U unit is perl-specific since it
+ mentions -DDEBUGGING and -DPOSIX_SOURCE, but that's the only place
+ it is perl-specific.)
dist_patches/
These are patches to dist that must be applied before it is built
and installed. I have submitted these for inclusion in the
- regular dist distribution.
+ regular dist distribution. They have already been applied
+ to the ../dist-3.0at70b directory.
+
+ebcdic/
+ These are units that had to be specially modified to work under
+ either EBCDIC or ASCII.
+
+installdirs/
+ These are units to handle perl's installation directories and
+ related issues.
modified/
These are modified versions of the standard units. Also included in
units. I have submitted these for inclusion in the regular dist
distribution.
+nullified/
+ These are null units that replace units in the standard
+ distribution. Typically they are there because some part of the
+ perl source accidentally uses a symbol that metaconfig thinks means we
+ want the corresponding unit.
+
perl/
These are specific to perl. Some are heavily derived from
original dist units, and are marked as such. Others are original.
protos/
These are units modified to use the new Hasproto.U or Protochk.U
- units to check for prototypes. I have submitted these for inclusion
- into the regular dist distribution.
+ units to check for prototypes.
-target/
- This is the very, very beginning of cross-compiler support.
- It doesn't work yet, and many standard units will need
- modification.
+threads/
+ These are specific to threading perl.
typedefs/
These are standard units modified to use the modified Typedef.U
unit to check for typedefs. (The modified Typdef.U includes a
function to avoid unnecessary prompts if the typdef being searched
- for exists.) I have submitted these for inclusion into the
- regular dist distribution.
+ for exists.)
+
-threads/
- These are specific to threading perl.
+Where appropriate, I submitted these units for inclusion into the
+regular dist distribution. However, since dist is no longer actively
+maintained, and the alternative is for *me* to actively maintain it,
+the units just sit here.
Copyright Information: