-
Notifications
You must be signed in to change notification settings - Fork 138
/
Messages.pm
160 lines (112 loc) · 3.66 KB
/
Messages.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# Copyright (C) 2001-2011, Parrot Foundation.
package Parrot::Configure::Messages;
use strict;
use warnings;
use base qw( Exporter );
our @EXPORT_OK = qw(
print_introduction
print_conclusion
);
################### SUBROUTINES ###################
sub print_introduction {
my $parrot_version = shift;
print <<"END";
Parrot Version $parrot_version Configure 2.0
Copyright (C) 2001-2011, Parrot Foundation.
Hello, I'm Configure. My job is to poke and prod your system to figure out
how to build Parrot. The process is completely automated, unless you passed in
the `--ask' flag on the command line, in which case I'll prompt you for a few
pieces of info.
Since you're running this program, you obviously have Perl 5--I'll be pulling
some defaults from its configuration.
END
return 1;
}
sub print_conclusion {
my ($conf, $make, $args) = @_;
my @failed_steps = @{ $conf->{log} };
my @logged_failed_steps = ();
for (my $i = 1; $i <= $#failed_steps; $i++) {
if ( defined $failed_steps[$i] ) {
push @logged_failed_steps, [ $i, $conf->{log}->[$i] ];
}
}
if ( scalar ( @logged_failed_steps ) ) {
print STDERR "\nDuring configuration the following steps failed:\n";
foreach my $fail (@logged_failed_steps) {
my $msg = sprintf " %02d: %s\n", (
$fail->[0],
$fail->[1]->{step},
);
print STDERR $msg;
}
print STDERR "You should diagnose and fix these errors before calling '$make'\n";
return;
}
else {
unless ( $args->{silent} ) {
print <<"END";
Okay, we're done!
You can now use `$make' to build your Parrot.
After that, you can use `$make test' to run the test suite.
Happy Hacking,
The Parrot Team
END
}
return 1;
}
}
1;
#################### DOCUMENTATION ####################
=head1 NAME
Parrot::Configure::Messages - Introduce and conclude Parrot configuration process
=head1 SYNOPSIS
use Parrot::Configure::Messages qw(
print_introduction
print_conclusion
);
print_introduction($parrot_version);
$rv = print_conclusion( $conf, $make, $args );
=head1 DESCRIPTION
Parrot::Configure::Messages exports on demand two subroutines which print
messages to STDOUT when F<Configure.pl> is run.
=head1 SUBROUTINES
=head2 C<print_introduction()>
=over 4
=item * Purpose
Print the Parrot version, the version of F<Configure.pl>, the copyright notice
and a message introducing the Parrot configuration process.
=item * Arguments
One argument: String holding the Parrot version number (currently supplied by
C<Parrot::BuildUtil::parrot_version()>).
=item * Return Value
Implicit true value when C<print> returns successfully.
=item * Comment
=back
=head2 C<print_conclusion()>
=over 4
=item * Purpose
Prints a message announcing the conclusion of the Parrot configuration process
and instructing the user to run F<make>.
=item * Arguments
$rv = print_conclusion( $conf, $make, $args );
List of three arguments: the Parrot::Configure object; the string holding the
version of F<make> located by the configuration process; and the hash
reference which is the first element in the list returned by
C<Parrot::Configure::Options::process_options()>.
=item * Return Value
Returns true value when configuration is successful and message has been
printed. Otherwise return value is undefined.
=back
=head1 NOTES
The functionality in this package was transferred from F<Configure.pl> by Jim
Keenan.
=head1 SEE ALSO
F<Configure.pl>.
=cut
# Local Variables:
# mode: cperl
# cperl-indent-level: 4
# fill-column: 100
# End:
# vim: expandtab shiftwidth=4: