1CONFIGSMOKE(1) User Contributed Perl Documentation CONFIGSMOKE(1)
2
3
4
6 configsmoke.pl - Create a configuration for tssmokeperl.pl
7
9 $ perl configsmoke.pl -p <prefix>[ -d <defaultsprefix>]
10
11 or regenerate from previous _config:
12
13 $ perl configsmoke.pl -p <prefix> -des
14
16 Current options:
17
18 -d dfvalsprefix Set prefix for a _dfconfig file (<prefix>)
19 -c configprefix When omitted 'perlcurrent' is used
20 -j jclprefix When omitted 'perlcurrent' is used
21 -l logprefix When omitted 'perlcurrent' is used
22 -p prefix Set -c and -j and -l at once
23
24 -des confirm all answers (needs previous _config)
25
27 Test::Smoke is the symbolic name for a set of scripts and modules that
28 try to run the perl core tests on as many configurations as possible
29 and combine the results into an easy to read report.
30
31 The main script is tssmokeperl.pl, and this uses a configuration file
32 that is created by this program (configsmoke.pl). There is no default
33 configuration as some actions can be rather destructive, so you will
34 need to create your own configuration by running this program!
35
36 By default the configuration file created is called
37 smokecurrent_config, this can be changed by specifying the "-c
38 <prefix>" or "-p <prefix>" switch at the command line ("-c" will
39 override "-p" when both are specified).
40
41 $ perl configsmoke.pl -c mysmoke
42
43 will create mysmoke_config as the configuration file.
44
45 After you are done configuring, a small job command list is written.
46 For MSWin32 this is called smokecurrent.cmd otherwise this is called
47 smokecurrent.sh. Again the default prefix can be overridden by
48 specifying the "-j <prefix>" or "-p <prefix>" switch.
49
50 All output (stdout, stderr) from tssmokeperl.pl and its sub-processes
51 is redirected to a logfile called smokecurrent.log by the small jcl.
52 (Use "-l <prefix>" or "-p <prefix>" to override).
53
54 There are two additional configuration default files smoke562_dfconfig
55 and smoke58x_dfconfig to help you configure Test::Smoke for these two
56 maintenance branches of the source-tree.
57
58 To create a configuration for the perl 5.8.x branch:
59
60 $ perl configsmoke.pl -p smoke58x
61
62 This will read additional defaults from smoke58x_dfconfig and create
63 smoke58x_config and smoke58x.sh/smoke58x.cmd and logfile will be
64 smoke58x.log.
65
66 To create another configuration for the same branch (and have the right
67 defaults) you can add the "-d" option:
68
69 $ perl configsmokepl -p snap58x -d smoke58x
70
71 To create a configuration for the perl 5.6.2 brach:
72
73 $ perl configsmoke.pl -p smoke562
74
76 Use of the program:
77
78 • Values in angled-brackets (<>) are alternatives (none other
79 allowed)
80
81 • Values in square-brackets ([]) are default values (<Enter>
82 confirms)
83
84 • Use single space to clear a value
85
86 Here is a description of the configuration sections.
87
88 perl_version
89 "perl_version" sets a number of default_values. This makes the
90 smoke5?x_dfconfig files almost obsolete, although they still
91 provide a nice way to set the prefix and set the perl_version.
92
93 ddir
94 "ddir" is the destination directory. This is used to put the
95 source-tree in and build perl. If a source-tree appears to be there
96 you will need to confirm your choice.
97
98 w32args
99 For MSWin32 we need some extra information that is passed to
100 Test::Smoke::Smoker in order to compensate for the lack of
101 Configure.
102
103 See "Configure_win32( )" in Test::Smoke::Util and tsw32configure.pl
104
105 cfg "cfg" is the path to the file that holds the build-configurations.
106 There are several build-cfg files provided with the distribution:
107
108 perlcurrent.cfg for 5.11.x+ on unixy systems
109 perl510x.cfg for 5.10.x (MAINT) on unixy systems
110 perl58x.cfg for 5.8.x (MAINT) on unixy systems
111 w32current.cfg for 5.8.x+ on MSWin32
112 vmsperl.cfg for 5.8.x+ on OpenVMS
113 Nick Clark hardlink forest
114 Here is how Nick described it to me:
115
116 My plan is to use a few more directories, and avoid make distclean:
117
118 1. rsync as before, but to a master directory. this directory is
119 only used for rsyncing from the server
120
121 2. copy that directory (as a hardlink forest) - gnu cp can do it
122 as cp -lr, and I have a perl script to replicate that (which
123 works nicely on FreeBSD) as a clean master source directory for
124 this smoke session
125
126 3. run the regen headers script (which 5.9.0 now has as a distinct
127 script) rather than just a Makefile target
128
129 I now have a clean, up-to-date source tree with accurate
130 headers. For each smoking configuration
131
132 4. copy that directory (hard links again)
133
134 5. in the copy directory. Configure, build and test
135
136 6. delete the copy directory
137
138 deleting a directory seems to be faster than make distclean.
139
140 sync_type (fsync)
141 "sync_type" (or "fsync" if you want_forest) can be one of four:
142
143 rsync
144 This will use the rsync program to sync up with the repository.
145 configsmoke.pl checks to see if it can find rsync in your path.
146
147 The default switches passed to rsync are: -az --delete
148
149 snapshot
150 This will use Net::FTP to try to find the latest snapshot on
151 <ftp://ftp.funet.fi/languages/perl/snap/>.
152
153 You can also get the perl-5.8.x snapshots (and others) via HTTP
154 if you have LWP installed. There are two things you should
155 remember:
156
157 1. start the server-name http://
158 2. the snapshot-file must be specified.
159
160 Snapshots are not in sync with the repository, so if you have a
161 working patch program, you can choose to "upgrade" your
162 snapshot by fetching all the seperate patches from the
163 repository and applying them.
164
165 copy
166 This will use File::Copy and File::Find to just copy from a
167 local source directory.
168
169 hardlink
170 This will use File::Find and the link function to copy from a
171 local source directory. (This is also used if you choose
172 "forest".)
173
174 See also Test::Smoke::Syncer
175
176 pfile
177 "pfile" is the path to a textfile that holds the names of patches
178 to be applied before smoking. This can be used to run a smoke test
179 on proposed patches that have not been applied (yet) or to see the
180 effect of reversing an already applied patch. The file format is
181 simple:
182
183 • one patchfile per line
184
185 • optionally followed by ';' and options to pass to patch
186
187 • optionally followed by ';' and a description for the patch
188
189 If the file does not exist yet, a skeleton version will be created
190 for you.
191
192 You will need a working patch program to use this feature.
193
194 TODO: There is an issue when using the "forest" sync, but I will
195 look into that.
196
197 skip_tests
198 This is a MANIFEST-like file with the paths to tests that should be
199 skipped for this smoke.
200
201 The process involves on the fly modification of MANIFEST for tests
202 in lib/ and ext/ and renaming of core-tests in t/.
203
204 hostname
205 In the case "System::Info->hostname" needs to be overridden.
206
207 user_note
208 This gives you a way of adding personal information to the report.
209
210 un_file is the filename where the text to insert into the report is
211 set.
212
213 user_note is the old way to add this text.
214
215 un_position specify if you want the user_note on TOP or at the
216 BOTTOM of te report.
217
218 force_c_locale
219 "force_c_locale" is passed as a switch to mktest.pl to indicate
220 that $ENV{LC_ALL} should be forced to "C" during make test.
221
222 defaultenv
223 "defaultenv", when set will make Test::Smoke remove $ENV{PERLIO}
224 and only do a single pass "make test".
225
226 locale
227 "locale" and its value are passed to mktest.pl and its value is
228 passed to mkovz.pl. mktest.pl will do an extra pass of make test
229 with $ENV{LC_ALL} set to that locale (and "$ENV{PERL_UNICODE} =
230 "";", "$ENV{PERLIO} = "perlio";"). This feature should only be used
231 with UTF8 locales, that is why this is checked (by regex only).
232
233 If you know of a way to get the utf8 locales on your system, which
234 is not covered here, please let me know!
235
236 smokedb_url [http://perl5.test-smoke.org]
237 Instead of flooding a mailing list, reposts should be sent to the
238 SmokeDB. The option to mail yourself a copy of the report still
239 exists. The SmokeDB however offers a central point of view to the
240 smoke results.
241
242 send_log <always|on_fail|never> [on_fail]
243 Please send in the smoke-logfile for failures.
244
245 send_out <always|on_fail|never> [never]
246 mail
247 "{mail}" will set the new default for tssmokeperl.pl
248
249 mail_type
250 See Test::Smoke::Mailer and mailrpt.pl
251
252 vmsmake
253 Get the make program to use for VMS (MMS or MMK). Start with the
254 one this perl was build with.
255
256 make finetuning
257 Two different config options to accomodate the same thing: parallel
258 build and serial testing
259
260 * makeopt => used by Test::Smoke::Smoker::_make()
261 * testmake => use a different binary for "make _test"
262
263 harnessonly
264 "harnessonly" indicates that "make test" is replaced by "make
265 test_harness".
266
267 hasharness3
268 "hasharness3" is automagically set for perl version >= 5.11
269
270 harness3opts
271 "harness3opts" are passed to "HARNESS_OPTIONS" for the "make
272 test_harness" step.
273
274 umask
275 "umask" will be set in the shell-script that starts the smoke.
276
277 renice
278 "renice" will add a line in the shell-script that starts the smoke.
279
280 v The verbosity level:
281
282 0: Be as quiet as possible
283 1: Give moderate information
284 2: Be as loud as possible
285
286 Every module has its own verbosity control and these are not verry
287 consistent at the moment.
288
289 smartsmoke
290 "smartsmoke" indicates that the smoke need not happen if the
291 patchlevel is the same after syncing the source-tree.
292
293 killtime
294 When $Config{d_alarm} is found we can use alarm() to abort long
295 running smokes. Leave this value empty to keep the old behaviour.
296
297 07:30 => F<tssmokeperl.pl> is aborted on 7:30 localtime
298 +23:45 => F<tssmokeperl.pl> is aborted after 23 hours and 45 minutes
299
300 Thank you Jarkko for donating this suggestion.
301
302 adir
303 The smokereports are lost after a new SYNCTREE step, it might be
304 handy to archive them along with the logfile.
305
306 If you want this then set the directory where you want the stored
307 (empty value means no archiving).
308
309 delay_report
310 Some filesystems do not support opening an already opened file.
311 This makes it hard to scan the logfile for compiler messages. We
312 can delay the creation of the report and call mailrpt.pl after
313 tssmokeperl.pl. VMS might benefit.
314
315 PERL5LIB
316 If you have a value for PERL5LIB set in the config environment, you
317 could have it transferred tho the jcl-wrapperscript. Do not bother
318 asking if it is not there.
319
320 PERL5OPT
321 If you have a value for PERL5OPT set in the config environment, you
322 could have it transferred tho the jcl-wrapperscript. Do not bother
323 asking if it is not there.
324
325 schedule stuff
326 cron/crontab
327 We try to detect 'crontab' or 'cron', read the contents of
328 crontab -l, detect ourself and comment us out. Then we add an
329 new entry.
330
331 MSWin32 at.exe
332 We only add a new entry, you will need to remove existing
333 entries, as at.exe has not got a way comment-out entries.
334
336 save_config()
337 save_config() writes the configuration data to disk. If
338 "Data::Dumper->can('Sortkeys')" it will order the keys.
339
340 sort_configkeys()
341 sort_configkeys() is the hook for Data::Dumper
342
343 Order and grouping by Merijn, thanks!
344
345 write_sh()
346 write_sh() creates the shell-script.
347
348 write_bat()
349 write_bat() writes the batch-file. It uses the ".cmd" extension
350 because it uses commands that are not supported by COMMAND.COM
351
352 write_com
353 Write a simple DCL script that helps running the smoke suite.
354
355 default_buildcfg( $file_name, $pversion )
356 Check to see if $file_name exists. If not, copy the default config
357 for $pversion to $file_name.
358
359 check_buildcfg
360 We will try to check the build configurations file to see if we
361 should comment some options out.
362
363 finish_cfgcheck
364 finish_cfgcheck() will create a backup of the original file and
365 write the new one in its place.
366
367 _perl_numeric_version( $dotted )
368 Normalize the dotted version to a numeric version.
369
371 Schedule, logfile optional
372
374 In case I forget to update the $VERSION:
375
376 $Id$
377
379 (c) 2002-2003, All rights reserved.
380
381 * Abe Timmerman <abeltje@cpan.org>
382
383 This library is free software; you can redistribute it and/or modify it
384 under the same terms as Perl itself.
385
386 See:
387
388 • <http://www.perl.com/perl/misc/Artistic.html>
389
390 • <http://www.gnu.org/copyleft/gpl.html>
391
392 This program is distributed in the hope that it will be useful, but
393 WITHOUT ANY WARRANTY; without even the implied warranty of
394 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
395
396
397
398perl v5.38.0 2023-07-21 CONFIGSMOKE(1)