Contents of this directory:
README: This file.
- U: Metaconfig units used for buliding Perl's Configure
+ U: Metaconfig units used for building 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 commit power wants to change
- the name of the directory, that'd be fine. Otherwise, it
- really doesn't matter.
dist-3.5-20:
dist-3.5-20 is almost meta-4.0, still maintained by Raphael
Manfredi, but with a lot of fixes over 3.0, some changes
- from the perl modifications merged and a much better metalint
+ from the perl modifications merged and a much better
+ metalint. This directory comes from a tar distribution.
+ dist-svn:
+ a git clone of "dist". Optionally present. See (a) below.
dist:
a symlink to the lib you actually use. For Merijn that is
metaconfig/dist -> ../lib/dist
in your $PATH.
The dist version used for perl is dist-3.5-20 in this directory, which is
a slightly modified version of the original, which you can get at the SVN
- repository https://dist.svn.sourceforge.net/svnroot/dist/trunk
+ repository https://svn.code.sf.net/p/dist/code/trunk/dist. If you'd like
+ to keep up to date with changes in dist, you can either use svn or git to
+ create your own clone. For git, that would be something like:
+
+ $ git svn clone \
+ svn://svn.code.sf.net/p/dist/code/trunk/dist \
+ dist-svn
+
Unsurprisingly 'dist' uses (its) Configure to generate itself:
- cd dist-3.5-20
- chmod -R +w . # We have derived files in git :-(
- ./Configure
- make
- make install
+ $ cd dist-3.5-20 # or dist-svn
+ $ chmod -R +w . # We have derived files in git :-(
+ $ ./Configure
+ $ make
+ $ make install
After make install, remove lib/U/d_debugging.U in your target lib, as perl
- uses it's own way to set/define debugging (see INSTALL)
+ uses its own way to set/define debugging (see INSTALL)
the dist-3.5-20 installation as used by Merijn is available on his CPAN as
perl-meta-3.5-20.tgz
We have not yet arranged for metaconfig to use perl's versions of the
'units' by default so you need some housekeeping in the perl directory...
+(aa) -- optional --
+
+ If you plan to make changes to metaconfig or metalint locally (and you
+ probably want to, as both are written for perl4), consider installing
+ mconfig and mlint from the cmon subdirectory into your $PATH too. These
+ are the non-autoloading versions and can easily be changed. Here is what
+ I added at the beginning of mconfig:
+
+ --8<---
+ BEGIN { $ENV{LC_ALL} = "C"; }
+ chdir "/pro/3gl/CPAN/perl";
+ { my @Cc = qw( Configure config_h.SH );
+ system "chown merijn @Cc";
+ chmod 0775, @Cc;
+ #-d "merijn" or mkdir "merijn";
+ #system "cp -f Configure config_h.SH Porting/Glossary Porting/config.sh merijn/";
+ system "ls", "-l", @Cc;
+ }
+ -->8---
+
+ I also added the first two lines of that patch to mlint
+
(b) You need to be in a/the Perl directory, i.e. either something from
//depot/perl/... or one of its branches
(e.g. Nick I-S is usually in //depot/perlio/...)
the best appropriate subdir of U. See U/README for a description of
the various subdirectories.)
-(d) Run metalint to see nits: as opposed to lint, the gripings of
- metalint are usually serious :-) and need fixing
+(d) Run metalint (or mlint) to see nits: as opposed to lint, the gripings
+ of metalint are usually serious :-) and need fixing
Exceptions are lots of
- Your private U/modified/voidflags.U overrides the public one.
+ Your private U/modified/issymlink.U overrides the public one.
due to the perl special units
an alias to something like
$ metalint |& grep -v -e '^ Your private U/'
- will make the process silence up on that
+ will make the process silence up on that (of course you can add an
+ option to mlint to disable that warning (which is already disabled
+ by the undocumented and forgotten -s option, but that also suppresses
+ other warnings)
and
(e) chmod +w Configure config_h.SH
-(f) metaconfig -m to regenerate Configure
+(f) metaconfig -m to regenerate Configure (or mconfig -m)
(g) metaconfig does not deal with depends in config_h.SH, so some
reorganization is needed.
you see fit.
You can skip this phase, it's not essential, just good housekeeping.
-(k) make veryclean; sh Configure -des -Dusedevel; make all test
+(k) Run the perl build chain
+
+ make veryclean
+ sh ./Configure -des -Dusedevel
+
+ The dependency for uconfig.h isn't carved in stone, so you might
+ need to regenerate it
+
+ perl regen/uconfig_h.pl
+
+ Then make and make test or make test_harness (with TEST_JOBS=5)
+
+ make all test_harness
+
+ Before you start committing, make sure that the other developers
+ are happy and run
+
+ make test_porting
-- the next steps are in the metaconfig folder again