Commit | Line | Data |
---|---|---|
13b7c768 NIS |
1 | Jarrko's How to build Configure tweaked by Nick. |
2 | ||
3 | You have presumably obtained the metaconfig from the repository e.g. | |
4 | p4 sync //depot/metaconfig/... | |
5 | or some other way to obtain this file. | |
6 | ||
7 | Normally this directory and perl directory are next to each other | |
8 | so ../perl will get you to perl and ../perl/../metaconfig will get you | |
9 | back here. | |
10 | ||
11 | (a) You need to have dist installed so that you have metalint and metaconfig | |
12 | in your $PATH. | |
13 | The dist version used for perl is dist-3.0at70b in this directory. | |
14 | Unsurprisingly 'dist' uses (its) Configure to generate itself: | |
15 | ||
16 | cd dist-3.0at70b | |
17 | chmod +w -R . # We have derived files in perforce :-( | |
18 | ./Configure | |
19 | make | |
20 | make install | |
21 | ||
22 | dist's 'Configure' is similar to perl's but perhaps not | |
23 | quite as polished. | |
24 | ||
25 | There are some perl specific "dist units" in the 'U' directory. | |
26 | The U directory also contains some patches to 'dist' which | |
27 | have already been applied to dist-3.0at70b directory. | |
28 | We have not yet arranged for metaconfig to use perl's versions | |
29 | of the 'units' by default so you need some housekeeping | |
30 | in the perl directory... | |
31 | ||
32 | (b) You need to be in a/the Perl directory, i.e. either | |
33 | something from //depot/perl/... or one of its branches | |
34 | (e.g. Nick I-S is usually in //depot/perlio/...) | |
35 | and you need: | |
36 | 1) have a symlink to ../metaconfig/U called U | |
37 | 2) have a symlink to ../metaconfig/.package called .package | |
38 | 3) have a symlink to MANIFEST called MANIFEST.new | |
39 | ||
40 | (c) Write the new unit as U/foo/bar.U (usually 'foo' is just 'perl', | |
41 | but sometimes there's some more appropriate subdir of U) | |
42 | ||
43 | (d) metalint to see nits: as opposed to lint, the gripings of | |
44 | metalint are usually serious :-) and need fixing | |
45 | ||
46 | Exceptions are lots of | |
47 | Your private U/modified/voidflags.U overrides the public one. | |
48 | due to the perl special units | |
49 | ||
50 | and | |
51 | ||
52 | "End.U": stale ?MAKE: dependency '$W'. | |
53 | ||
54 | which is apparently normal ... | |
55 | ||
56 | (e) p4 edit Configure config_h.SH | |
57 | ||
58 | (f) metaconfig -m to regenerate Configure | |
59 | ||
60 | (g) The messy not-yet-automated part is that the knowledge of the new symbol | |
61 | needs to be propagated to non-Configure lands like Win32, Netware, | |
62 | VMS, VOS, ... see previous Configure changes to see which are these | |
63 | heathen lands | |
64 | ||
65 | For Win32 the process is semi-automated - if you have a Win32 | |
66 | machine to run dmake on ... | |
67 | ||
68 | (h) then there's the running of mksample to freshen the Porting/config* | |
69 | and Porting/Glossary, but I can't remember where the 'mksample' came | |
70 | from, could be part of 'dist'. You can skip this phase, | |
71 | it's not essential, just good housekeeping. | |
72 | ||
73 | (i) make veryclean;sh Configure -des -Dusedevel;make all test | |
74 | ||
75 | (j) p4 add ../metaconfig/foo/bar.U when you are ready ... | |
76 | ||
77 | (k) p4 submit | |
78 | ||
79 |