2 ################################################################################
4 # regenerate -- regenerate baseline and todo files
6 ################################################################################
8 # Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
9 # Version 2.x, Copyright (C) 2001, Paul Marquess.
10 # Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
12 # This program is free software; you can redistribute it and/or
13 # modify it under the same terms as Perl itself.
15 ################################################################################
23 require './devel/devtools.pl';
30 GetOptions(\%opt, qw( check! verbose install=s blead=s blead-version=s )) or die pod2usage();
34 unless (-e 'parts/embed.fnc' and -e 'parts/apidoc.fnc') {
35 print "\nOooops, $0 must be run from the Devel::PPPort root directory.\n";
39 ask_or_quit("Are you sure you have updated parts/embed.fnc and parts/apidoc.fnc?");
41 my %files = map { ($_ => [glob "parts/$_/5*"]) } qw( base todo );
44 for my $f (map @$_, values %files) {
45 push @{-w $f ? \@wr : \@notwr}, $f;
50 print "\nThe following files are not writable:\n\n";
51 print " $_\n" for @notwr;
52 print "\nAre you sure you have checked out these files?\n";
55 print "\nAll baseline / todo file are not writable.\n";
56 ask_or_quit("Do you want to try to check out these files?");
57 unless (runtool("wco", "-l", "-t", "locked by $0", @notwr)) {
58 print "\nSomething went wrong while checking out the files.\n";
64 for my $dir (qw( base todo )) {
65 my $cur = "parts/$dir";
68 ask_or_quit("Do you want me to remove the old $old directory?");
72 print "\nBacking up $cur in $old.\n";
73 for my $src (@{$files{$dir}}) {
75 $dst =~ s/\Q$cur/$old/ or die "Ooops!";
76 move($src, $dst) or die "Moving $src to $dst failed: $!\n";
81 push @perlargs, "--install=$opt{install}" if exists $opt{install};
82 push @perlargs, "--blead=$opt{blead}" if exists $opt{blead};
85 my @args = ddverbose();
86 push @args, '--nocheck' unless $opt{check};
87 push @args, "--blead-version=$opt{'blead-version'}" if exists $opt{'blead-version'};
88 push @args, @perlargs;
90 print "\nBuilding baseline files...\n\n";
92 unless (runperl('devel/mktodo', '--base', @args)) {
93 print "\nSomething went wrong while building the baseline files.\n";
97 print "\nMoving baseline files...\n\n";
99 for my $src (glob 'parts/todo/5*') {
101 $dst =~ s/todo/base/ or die "Ooops!";
102 move($src, $dst) or die "Moving $src to $dst failed: $!\n";
105 print "\nBuilding todo files...\n\n";
107 unless (runperl('devel/mktodo', @args)) {
108 print "\nSomething went wrong while building the baseline files.\n";
112 print "\nAdding remaining baseline info...\n\n";
114 unless (runperl('Makefile.PL') and
116 runperl('devel/scanprov', '--mode=write', @perlargs)) {
117 print "\nSomething went wrong while adding the baseline info.\n";
121 my($wall, $usr, $sys, $cusr, $csys) = (time - $T0, times);
122 my $cpu = sprintf "%.2f", $usr + $sys + $cusr + $csys;
123 $usr = sprintf "%.2f", $usr + $cusr;
124 $sys = sprintf "%.2f", $sys + $csys;
128 API info regenerated successfully.
130 Finished in $wall wallclock secs ($usr usr + $sys sys = $cpu CPU)
132 Don't forget to check in the files in parts/base and parts/todo.
140 regenerate - Automatically regenerate Devel::PPPort's API information
146 --nocheck don't recheck symbols that caused an error
147 --verbose show verbose output
151 Copyright (c) 2006-2013, Marcus Holland-Moritz.
153 This program is free software; you can redistribute it and/or
154 modify it under the same terms as Perl itself.
158 See L<Devel::PPPort> and L<HACKERS>.