On Sat, Feb 28, 2009 at 04:13:49AM -0800, Reini Urban via RT wrote:
> Fixed by r37043. Thanks!
> 
> BTW: [email protected] still puts tickets into RT

Note that this conflicts with TT #27, which says that we should
disable parrotbug altogether or make it submit to Trac.

The attached patch replaces the existing parrotbug script
with a script that displays a message inviting the user to
submit their report via Trac.

Pm
Index: parrotbug
===================================================================
--- parrotbug	(revision 37047)
+++ parrotbug	(working copy)
@@ -1,824 +1,19 @@
 #!/usr/bin/perl
 #
-# Copyright (C) 2004-2009, Parrot Foundation.
+# Copyright (C) 2009, Parrot Foundation.
 # $Id$
 #
 
-eval 'exec perl -w -S $0 ${1+"$@"}'
-    if $running_under_some_shell;
-
 use strict;
 use warnings;
 
-use Config;
-use File::Spec;
-use Getopt::Long;
+print <<'END'
 
+We no longer use parrotbug for bug reports; please submit
+reports via the web interface at http://trac.parrot.org/ .
 
-my $VERSION = "1.0";
+Thanks,
+   The Parrot Team
 
-# These are the standard addresses for reporting bugs.
-my %std_to =
-  ( bug => '[email protected]',
-    ok  => '[email protected]',
-    nok => '[email protected]',
-  );
+END
 
-my $parrotdir = File::Spec->curdir();
-my ( %opts, %parrot, %report );
-my ( $editor, $user, $domain, $msgid, $tmpfile );
-my ( $is_linux, $is_macos, $is_mswin32, $is_os2, $is_vms );
-my @categories = qw[ core docs install library utilities languages ];
-my @severities = qw[ critical high medium low wishlist none ];
-
-
-#------------------------------------------------------------#
-#                       Main program.                        #
-
-init();
-help()    if $opts{help};
-version() if $opts{version};
-explain_parrotbug() unless $opts{quiet};
-query_missing_info();
-what_next();
-unlink $tmpfile;
-exit;
-
-
-
-# Explain what C<parrotbug> is.
-sub explain_parrotbug {
-    print <<EOT;
-
-This program provides an easy way to create a message reporting a bug
-in parrot, and e-mail it to the parrot developers.
-
-It is *NOT* intended for:
-  - sending test messages,
-  - or reporting bugs in languages targetting parrot,
-  - or reporting bugs in some library bindings for parrot,
-  - or simply verifying that parrot works.
-
-It is *ONLY* a mean of reporting verifiable problems with the core
-parrot distribution, and any solutions to such problems, to parrot
-developers.
-
-If you're just looking for help with parrot, subscribe to the parrot
-mailing list, parrot-dev<at>lists.parrot.org.
-
-
-
-EOT
-}
-
-
-
-
-#------------------------------------------------------------#
-#                        Utils subs.                         #
-
-# Generate random filename to edit report.
-sub generate_filename {
-    my $dir = File::Spec->tmpdir();
-    my $filename = "bugrep0$$";
-    $filename++ while -e File::Spec->catfile($dir, $filename);
-    $filename = File::Spec->catfile($dir, $filename);
-    return $filename;
-}
-
-
-# Check whether a subject is trivial. A subject is not considered trivial
-# if it's an ok or a nok report.
-# Return 1 if trivial, 0 otherwise (subject acceptable).
-sub trivial_subject {
-    my $subject = shift;
-
-    return 0 if $opts{ok} || $opts{nok};
-    if ( $subject =~
-         /^(y(es)?|no?|help|parrot( (bug|problem))?|bug|problem)$/i ||
-         length($subject) < 4 ||
-         $subject !~ /\s/ ) {
-        return 1;
-    }
-    else {
-        return 0;
-    }
-}
-
-
-
-
-#------------------------------------------------------------#
-#                         Init subs.                         #
-
-# Initialize the program. 
-# 
-# Get parrot information, process the options, create the message
-# information (subject, to, body, etc.) depending on the type of report
-# (ok, nok or bug report).
-sub init {
-    $is_linux   = lc($^O) eq 'linux';
-    $is_mswin32 = $^O eq 'MSWin32';
-    $is_os2     = $^O eq 'os2';
-    $is_vms     = $^O eq 'VMS';
-
-    ##
-    ## Fetch Parrot information.
-    ##
-
-    # Get parrot version.
-    # There will always be an up-to-date $parrot/VERSION
-    my $filename = File::Spec->catfile($parrotdir, "VERSION");
-    open(VERSION, "<$filename") or die "Cannot open '$filename': $!";
-    $parrot{version} = <VERSION>;
-    chomp $parrot{version};
-    close(VERSION) or die "Cannot close '$filename': $!";
-
-    # Get parrot configuration, stored in $parrot/myconfig
-    $filename = File::Spec->catfile($parrotdir, "myconfig");
-    open(MYCONFIG, "<$filename") or die "Cannot open '$filename': $!";
-    {
-        local $/;
-        $parrot{myconfig} = <MYCONFIG>;
-    }
-    close(MYCONFIG) or die "Cannot close '$filename': $!";
-
-
-    ##
-    ## Process options.
-    ##
-    Getopt::Long::Configure("no_bundling", "no_ignore_case", "auto_abbrev");
-    help() unless GetOptions
-      ( \%opts,
-        "help|h", "version|V",
-        "send", "dump", "save",
-        "from|f=s", "to|test|t=s", "editor|e=s",
-        "subject|s=s", "category|C=s", "severity|S=s",
-        "input|input-file|i=s", "output|output-file|o=s",
-        "ok", "nok", "ack!", "quiet|q!" );
-
-    ##
-    ## Report to be sent.
-    ##
-  sw: {
-      ok_report: {
-            last ok_report unless defined $opts{ok};
-
-            # This is an ok report, woohoo!
-            $report{to} = $std_to{ok};
-            $report{subject} = "OK: parrot $parrot{version} "
-              . "on $Config{archname} $Config{osvers}";
-            $report{body} = "Parrot reported to build OK on this system.\n";
-            $report{category} = "install";
-            $report{severity} = "none";
-            $report{body} = "";
-            last sw;
-        };
-
-        # Ok reports do not need body, but nok and bug reports do need
-        # a body.
-        if ( $opts{input} ) {
-            # Report was pre-written, slurp it.
-            open BODY, "<$opts{input}" or die "Can't open '$opts{input}': $!";
-            local $/;
-            $report{body} = <BODY>;
-            close BODY or  die "Can't close '$opts{input}': $!";
-        }
-        else {
-            # No file provided...
-            $report{body} = "";
-        }
-
-      nok_report: {
-            last nok_report unless defined $opts{nok};
-
-            # This a nok report, how sad... :-(
-            $report{to} = $std_to{nok};
-            $report{subject} = "Not OK: parrot $parrot{version} "
-              . "on $Config{archname} $Config{osvers}";
-            $report{category} = "install";
-            $report{severity} = "none";
-            last sw;
-        };
-
-        # Neither an ok nor a nok.
-        $report{to} = $std_to{bug};
-        $report{subject}  = $opts{subject}  || "";
-        $report{category} = $opts{category} || "";
-        $report{severity} = $opts{severity} || "";
-    };
-
-    # Test message, shortcuting recipent.
-    $report{to} = $opts{to} if $opts{to};
-
-    ## 
-    ## User information.
-    ## 
-
-    # Username.
-    $user = $is_mswin32 ? $ENV{USERNAME}
-	    : $is_os2   ? $ENV{USER} || $ENV{LOGNAME}
-	    : $is_macos ? $ENV{USER}
-	    : eval { getpwuid($<) };	# May be missing
-
-    # User address, used in message and in Reply-To header.
-    $report{from} = $opts{from} || "";
-
-   # Editor
-    $editor = $ENV{VISUAL} || $ENV{EDITOR} || $ENV{EDIT}
-      || ( $is_vms && "edit/tpu" )
-      || ( $is_mswin32 && "notepad" )
-      || ( $is_macos && "" )
-      || "vi";
-
-
-    ## 
-    ## Mail information.
-    ## 
-
-    # Message-Id.
-    eval "use Mail::Util;";
-    if ( $@ eq "" ) {
-        $domain = Mail::Util::maildomain();
-    }
-    elsif ($is_mswin32) {
-        $domain = $ENV{USERDOMAIN};
-    }
-    else {
-        require Sys::Hostname;
-        $domain = Sys::Hostname::hostname();
-    }
-    $msgid = "<parrotbug_${VERSION}_${$}_".time."\...@$domain>";
-}
-
-
-
-#------------------------------------------------------------#
-#                       Querying subs.                       #
-
-# Query missing information in order to have a complete report.
-sub query_missing_info {
-    $report{subject} = "" if trivial_subject( $report{subject} );
-    $report{subject}  = ask_for_subject()     unless $report{subject};
-    $report{category} = ask_for_alternative( "category", \...@categories)
-      unless $report{category};
-    $report{severity} = ask_for_alternative( "severity", \...@severities)
-      unless $report{severity};
-    $report{from} = ask_for_return_address()  unless $report{from};
-    $report{body} = ask_for_body()            unless $report{body};
-}
-
-
-# Prompt for alternatives from a set of choices.
-# 
-# The arguments are: the name of alternative, the choices (as an array
-# ref), and the default answer. (first element if undef)
-# 
-# Return the lowercased alternative chosen.
-# 
-# Die if more than 5 wrong answers.
-sub ask_for_alternative {
-    my ( $what, $choices, $default ) = @_;
-
-    print <<EOT unless $opts{quiet};
-Please pick a $what from the following:
-  @{$choices}
-
-EOT
-
-    $default ||= $choices->[0];
-    my $alt;
-    my $err = 0;
-    do {
-        die "Invalid $alt: aborting.\n" if $err++ > 5;
-        print "Please enter a $what [$default]: ";
-        $alt = <STDIN>;
-        chomp $alt;
-        $alt = $default if $alt =~ /^\s*$/;
-    } until ( ($alt) = grep /^$alt/i, @$choices );
-
-    print "\n\n\n";
-    return lc $alt;
-}
-
-
-# Prompt for a body, through an external editor.
-sub ask_for_body {
-    unless ( $opts{quiet} ) {
-        print <<EOT;
-Now you need to supply the bug report. Try to make the report concise
-but descriptive. Include any relevant detail. If you are reporting
-something that does not work as you think it should, please try to
-include example of both the actual result, and what you expected.
-
-Some information about your local parrot configuration will
-automatically be included at the end of the report. If you are using
-any unusual version of parrot, please try and confirm exactly which
-versions are relevant.
-
-EOT
-
-        print "Press 'Enter' to continue...\n";
-        scalar <STDIN>;
-    }
-
-    # Prompt for editor to use if none supplied.
-    if ( $opts{editor} ) {
-        $editor = $opts{editor};
-
-    }
-    else {
-        ask_for_editor($opts{quiet} ? "" : <<EOT);
-You will probably want to use an editor to enter the report. If the
-default editor proposed below is the editor you want to use, then just
-press the 'Enter' key, otherwise type in the name of the editor you
-would like to use.
-EOT
-    }
-
-    # Launch editor.
-    $tmpfile = generate_filename();
-    my $body = "";
-    my $err = 0;
-    do {
-        edit_bug_report( $tmpfile );
-        # Slurp bug report.
-        open BODY, "<$tmpfile" or die "Can't open '$tmpfile': $!";
-        {
-            local $/;
-            $body = <BODY>;
-        }
-        close BODY or die "Can't close '$tmpfile': $!";
-        unless ( $body ) {
-            print "\nYou provided an empty bug report!\n";
-            print "Press 'Enter' to continue...\n";
-            scalar <STDIN>;
-        }
-        die "Aborting.\n" if $err++ == 5;
-    } until ( $body );
-
-    return $body;
-}
-
-
-# Prompt for editor to use.
-sub ask_for_editor {
-    print shift() . "Editor [$editor]: ";
-    my $entry = <STDIN>;
-    chomp $entry;
-    $editor = $entry if $entry ne "";
-    $opts{editor} = $editor;
-}
-
-
-# Prompt for return address, return it.
-sub ask_for_return_address {
-    print <<EOT unless $opts{quiet};
-Your e-mail address will be useful if you need to be contacted. If the
-default shown below is not your full internet e-mail address, please
-correct it.
-EOT
-    
-    # Try and guess return address
-    my ($from, $guess);
-    $guess = $ENV{'REPLY-TO'} || $ENV{REPLYTO} || "";
-
-    if ( ! $guess ) {
-        # Use $domain if we can.
-        if ( $domain ) {
-            $guess = $is_vms && !$Config{d_socket} ?
-              "$domain\:\:$user" : "$us...@$domain";
-        }
-    }
-
-    # Verify our guess.
-    print "Your address [$guess]: ";
-    $from = <STDIN>;
-    chomp $from;
-    $from = $guess if $from eq "";
-    print "\n\n\n";
-    return $from;
-}
-
-
-# Prompt for subject of message.
-#
-# Return the subject chosen.
-# 
-# Die if more than 5 wrong subjects.
-sub ask_for_subject {
-    print <<EOT unless $opts{quiet};
-First of all, please provide a subject for the message. It should be a
-concise description of the bug or problem. "parrot bug" or "parrot
-problem" is not a concise description.
-
-EOT
-
-    my $subject;
-    my $err = 0;
-    do {
-        $err and print "\nThat doesn't look like a good subject. "
-          . "Please be more verbose.\n";
-        print "Subject: ";
-        $subject = <STDIN>;
-        $subject = q{} unless defined $subject;
-        chomp $subject;
-        die "Aborting.\n" if $err++ == 5;
-    } while ( trivial_subject($subject) );
-    print "\n\n\n";
-    return $subject;
-}
-
-
-# Launch an editor in which to edit the bug report.
-sub edit_bug_report {
-    my $filename = shift;
-
-    # Launch editor.
-    my $retval;
-    $retval = system($editor, $filename);
-
-    # Check whether editor run was successful.
-    die <<EOT if $retval;
-The editor you chose ('$editor') could apparently not be run! Did you
-mistype the name of your editor?
-
-EOT
-
-}
-
-
-
-#------------------------------------------------------------#
-#                        Action subs.                        #
-
-
-# Display everything collected.
-sub dump_report { 
-    print "==> Dumping message...\n";
-    print format_message();
-}
-
-
-# Last chance to edit report.
-sub edit_report {
-    # Prompt for editor to use if none supplied.
-    unless ( $opts{editor} ) {
-        ask_for_editor(<<EOT);
-You will probably want to use an editor to modify the report. If the
-default editor proposed below is the editor you want to use, then just
-press the 'Enter' key, otherwise type in the name of the editor you
-would like to use.
-EOT
-    }
-
-    $tmpfile ||= $opts{input};
-    my $err = 0;
-    my $body;
-    do {
-        edit_bug_report( $tmpfile );
-        # Slurp bug report.
-        open BODY, "<$tmpfile" or die "Can't open '$tmpfile': $!";
-        {
-            local $/;
-            $body = <BODY>;
-        }
-        close BODY or die "Can't close '$tmpfile': $!";
-        unless ( $body ) {
-            print "\nYou provided an empty bug report!\n";
-            print "Press 'Enter' to continue...\n";
-            scalar <STDIN>;
-        }
-        die "Aborting.\n" if $err++ == 5;
-    } until ( $body );
-
-    $report{body} = $body;
-}
-
-
-# Format the message with everything collected and return it.
-sub format_message {
-    my $report = "";
-
-    # OS, arch, compiler...
-    $report .= <<EOT;
----
-osname= $Config{osname}
-osvers= $Config{osvers}
-arch=   $Config{archname}
-EOT
-
-    my $cc = $Config{cc};
-    #$report .= "cc=     $cc $Config{${cc}.'version'}\n";
-    $report .= "cc=     $cc\n";
-
-
-    # ... flags...
-    $report .= <<EOT;
----
-Flags:
-    category=$report{category}
-    severity=$report{severity}
-EOT
-    $report .= "    ack=no\n" if ! $opts{ack};
-
-    # ... bug report ...
-    $report .= "---\n$report{body}\n";
-
-    # ... myconfig ...
-    $report .= "---\n$parrot{myconfig}\n---\n";
-
-    # ... and environment.
-    $report .= "Environment:\n";
-    my @env = qw[ PATH LD_LIBRARY_PATH LANG SHELL HOME LOGDIR LANGUAGE ];
-    push @env, $Config{ldlibpthname} if $Config{ldlibpthname} ne '';
-    push @env, grep /^(?:PERL|LC_|LANG|CYGWIN)/, keys %ENV;
-    my %env; 
-    @e...@env} = @env;
-    for my $env (sort keys %env) {
-        my $env_value = exists $ENV{$env} ? "=$ENV{$env}\n" : " (unset)\n";
-	$report .= "    $env $env_value";
-    }
-
-    return $report;
-}
-
-
-# Print synopsis + help message and exit.
-sub help {
-    print <<EOT;
-
-A program to help generate bug reports about parrot, and mail them.
-It is designed to be used interactively. Normally no arguments will
-be needed.
-
-Simplest usage:  run '$0', and follow the prompts.
-Usage:           $0 [OPTIONS] [ACTIONS]
-
-Options:
-  --ok                   Report successful build on this system to parrot
-                         developers. Only use --ok if *everything* was ok:
-                         if there were *any* problems at all, use --nok.
-  --nok                  Report unsuccessful build on this system.
-  --subject <subject>    Subject to include with the message.
-  --category <category>  Category of the bug report.
-  --severity <severity>  Severity of the bug report.
-  --from <address>       Your email address.
-  --editor <editor>      Editor to use for editing the bug report.
-  --ack, --noack         Don't send a bug received acknowledgement.
-  --input-file           File containing the body of the report. Use this
-                         to quickly send a prepared message.
-  --output-file          File where parrotbug will save its bug report.
-  --to <address>         Email address to send report to. (testing only)
-
-  Note: you will be prompted if the program miss some information.
-
-Actions:
-  --dump           Dump message.
-  --save           Save message.
-  --send           Send message.
-  --help           Print this help message and exit.
-  --version        Print version information and exit.
-
-EOT
-    exit;
-}
-
-
-# Save message to file.
-sub save_report {
-    print "\n==> Saving message to file...\n";
-    if ( ! $opts{output} ) {
-        print "Enter filename to save bug report: ";
-        $opts{output} = <STDIN>;
-    }
-
-    open OUTPUT, ">$opts{output}" or die "Cannot open '$opts{output}': $!";
-    print OUTPUT format_message();
-    close OUTPUT or die "Cannot open '$opts{output}': $!";
-
-    print "Message saved.\n";
-}
-
-
-# Send message to final recipient.
-sub send_report {
-    print "==> Sending message to recipient...\n";
-
-    # On linux certain mail implementations won't accept the subject
-    # as "~s subject" and thus the Subject header will be corrupted
-    # so don't use Mail::Send to be safe
-    eval "require Mail::Send";
-    if ( $@ eq "" && !$is_linux) {
-	my $msg = new Mail::Send Subject => $report{subject}, To => $report{to};
-	$msg->add( "Reply-To", $report{from} );
-
-	my $fh = $msg->open;
-        print $fh format_message();
-	$fh->close;
-
-	print "\nMessage sent.\n";
-
-    }
-    else {
-	my $sendmail = "";
-	for ( qw[ /usr/lib/sendmail /usr/sbin/sendmail 
-                  /usr/ucblib/sendmail /var/qmail/bin/sendmail ] ) {
-	    $sendmail = $_, last if -e $_;
-	}
-
-	die <<EOT if $sendmail eq "";
-I am terribly sorry, but I cannot find sendmail, or a close
-equivalent, and the perl package Mail::Send has not been installed, so
-I can't send your bug report. We apologize for the inconvenience.
-
-So you may attempt to find some way of sending your message, it has
-been left in the file '$tmpfile'.
-EOT
-
-	open(SENDMAIL, "|$sendmail -t -oi") || die "'|$sendmail -t -oi' failed: $!";
-
-	print SENDMAIL <<EOT;
-To: $report{to}
-Subject: $report{subject}
-Reply-To: $report{from}
-Message-Id: $msgid
-
-EOT
-
-        print SENDMAIL format_message();
-	if (close(SENDMAIL)) {
-	    printf "\nMessage sent.\n";
-        }
-        else {
-	    warn "\nSendmail returned status '", $? >> 8, "'\n";
-	}
-    }
-}
-
-
-# Print version information (of the parrotbug program) and exit.
-sub version {
-    print <<"EOT";
-
-This is $0, version $VERSION.
-
-EOT
-    exit;
-}
-
-
-# Check whether actions have been provided on comand-line, otherwise
-# prompt for what to do with bug report.
-sub what_next {
-    dump_report() if $opts{dump};
-    save_report() if $opts{save};
-    send_report() if $opts{send};
-
-    return if $opts{dump} || $opts{save} || $opts{send};
-
-    # No actions provided on command-line, prompt for action.
-
-    my $action;
-    do {
-        print "Action (send,display,edit,save,quit): ";
-        $action = <STDIN>;
-       sw: for ($action) {
-             dump_report(), last sw if /^d/i;
-             edit_report(), last sw if /^e/i;
-             save_report(), last sw if /^sa/i;
-             send_report(), last sw if /^se/i;
-             print "Uh?\n" unless /^q/i;
-         };
-    } until ( $action =~ /^q/i );
-}
-
-
-__END__
-
-=head1 NAME
-
-parrotbug - Parrot Bug Reporter
-
-=head1 SYNOPSIS
-
-    % ./parrotbug [options] [actions]
-
-=head1 DESCRIPTION
-
-A program to help generate bug reports about parrot, and mail them.
-It is designed to be used interactively. Normally no arguments will
-be needed.
-
-
-=head1 COMMAND-LINE SWITCHES
-
-
-=head2 Options
-
-Note: you will be prompted if the program miss some information.
-
-=over 4
-
-=item B<--nok>
-
-Report unsuccessful build on this system to parrot developers.
-
-=item B<--ok>
-
-Report successful build on this system to parrot developers Only use
-C<--ok> if B<everything> was ok; if there were B<any> problems at all,
-use C<--nok>.
-
-=item B<--subject>
-
-Subject of the report. You will be prompted if you don't supply one on
-the command-line.
-
-=item B<--category>
-
-Category of the bug report. You will be prompted if you don't supply
-one on the command-line.
-
-=item B<--severity>
-
-Severity of the bug report. You will be prompted if you don't supply
-one on the command-line.
-
-=item B<--address>
-
-Your email address. The program will try to guess one if you don't
-provide one, but you'll still need to validate it.
-
-=item B<--editor>
-
-Editor to use for editing the bug report.
-
-=item B<--ack>, B<--noack>
-
-Don't send a bug received acknowledgement.
-
-=item B<--input-file>
-
-File containing the body of the report. Use this to quickly send a
-prepared message.
-
-=item B<--output-file>
-
-File where parrotbug will save its bug report, if you ask it to do so.
-
-=item B<--to>
-
-Email address to send report to. (for testing purposes only)
-
-=back
-
-
-=head2 Actions
-
-You can provide more than one action on the command-line. If none is
-supplied, then you will be prompted for what to do.
-
-=over 4
-
-=item B<--dump>
-
-Dump formatted report on standard output.
-
-=item B<--save>
-
-Save message to a file, in order for you to send it later from your
-own. See C<--output> flag.
-
-=item B<--send>
-
-Try to send a mail with the report.
-
-=item B<--help>
-
-Print a short synopsis and exit.
-
-=item B<--version>
-
-Print version information and exit.
-
-=back
-
-
-=head1 AUTHORS
-
-Jerome Quelin (E<lt>[email protected]<gt>), with lots of good stuff taken from perlbug.
-
-
-=head1 SEE ALSO
-
-perlbug(1), parrot(1), diff(1), patch(1)
-
-=cut
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
_______________________________________________
http://lists.parrot.org/mailman/listinfo/parrot-dev

Reply via email to