Commit 995cb00f authored by Alessandro Ghedini's avatar Alessandro Ghedini

Imported Upstream version 0.1~2010.01

parents
*~
src/gen_*.pir
src/gen_*.pm
Makefile
.*.swp
*.patch
Test.pir
perl6
perl6.pbc
perl6_s1.pbc
perl6.exe
perl6.c
perl6.o
perl6.obj
perl6.RES
perl6.ilk
perl6.opt
perl6.pdb
perl6.rc
t/localtest.data
t/spec
parrot
parrot_install
perl6
perl6.c
perl6.o
MANIFEST
commits.png
docs/test_summary.times
dynext/perl6_*.bundle
dynext/perl6_*.so
dynext/perl6_*.dll
perl6_group.?
libparrot.dll
src/binder/bind.bundle
src/binder/bind.o
=pod
Following in the steps of other open source projects that
eventually take over the world, here is the partial list
of people who have contributed to Rakudo and its supporting
works. It is sorted by name and formatted to allow easy
grepping and beautification by scripts.
The fields are: name (N), email (E), web-address (W),
description (D), subversion username (U) and snail-mail
address (S).
Thanks,
The Rakudo Team
PS: Yes, this looks remarkably like the Linux CREDITS format
PPS: This file is encoded in UTF-8
----------
N: Alberto Manuel Brandao Simoes
U: ambs
E: ambs@cpan.org
S: Braga, Portugal
W: http://alfarrabio.di.uminho.pt/~albie/
N: Alex Elsayed
U: eternaleye
E: eternaleye@gmail.com
N: Allison Randal
D: Parrot Architect (0.4.6...)
E: allison@parrot.org
U: allison
N: Ahmad M. Zawawi
U: azawawi
E: ahmad.zawawi@gmail.com
D: Rakudo builtins, win32 patches
N: Andrew Whitworth
E: wknight8111@gmail.com
U: Whiteknight
N: Andy Lester
E: andy@petdance.com
W: http://perlbuzz.com/
S: McHenry, IL, USA
U: petdance
U: ask
N: Ask Bjørn Hansen
D: Keeps us running
E: ask@develooper.com
N: Audrey Tang
U: audreyt
U: autrijus
E: audreyt@audreyt.org
D: Pugs, a Perl6->Parrot implementation.
N: Bernhard Schmalhofer
U: bernhard
E: Bernhard.Schmalhofer@gmx.de
N: Bob Rogers
D: Random small bug fixes
E: rogers-perl6@rgrjr.dyndns.org
U: rgrjr
N: Bruce Gray
U: util
E: bruce.gray@acm.org
N: Bryan C. Warnock
D: The First Perl 6 Summarizer
D: Little things here and there in pre-Parrot days.
D: And, yes, {sigh}, *that* Warnock.
E: bwarnock@raba.com
N: Carl Masak
E: cmasak@gmail.com
U: masak
N: Chip Salzenberg
D: Release manager emeritus
D: Architect emeritus (0.1.2-0.4.5)
U: chip
E: chip@pobox.com
N: Chris Davaz
D: Rakudo builtins
E: cdavaz@gmail.com
N: Chris Dolan
U: cdolan
D: Rakudo patches
E: cdolan@cpan.org
N: Chris Fields
U: cjfields
D: Rakudo patches
N: Christoph Otto a.k.a. cotto
U: cotto
E: christoph@mksig.org
N: chromatic
U: chromatic
E: chromatic@wgz.org
W: http://wgz.org/chromatic/
N: Colin Kuskie
U: colink
E: ckuskie@sterling.net
N: Cory Spencer
U: cspencer
D: Rakudo builtins
E: cspencer@sprocket.org
N: Curtis 'Ovid' Poe
U: Ovid
D: docs/test cleanups/Makefile fixes
D: Rename 'pbc_to_c' to 'pbc_to_exe'
E: ovid@cpan.org
N: Dan Sugalski
U: dan
D: Architect emeritus (0.0.1-0.1.1)
E: dan@sidhe.org
W: http://www.sidhe.org/~dan/blog/
N: David Romano
D: PGE tests and fixes
E: david.romano+p6i@gmail.com
N: Dino Morelli
D: PGE tests
E: dmorelli@reactorweb.net
N: Florian Ragwitz
U: rafl
U: flora
E: rafl@debianforum.de
W: http://www.tu-chemnitz.de/~rafl/
S: Chemnitz, Germany
N: François Perrad
E: francois.perrad@gadz.org
W: http://fperrad.googlepages.com/home
U: fperrad
N: Geoff Broadwell
U: japhb
E: geoff@broadwell.org
U: gregor
N: Gregor N. Purdy
E: gregor@focusresearch.com
S: Sunnyvale, CA
N: James E Keenan (Jim)
E: jkeenan@cpan.org
U: jkeenan
W: http://thenceforward.net/parrot/
S: Brooklyn, NY, USA
N: Jarkko Hietaniemi
U: jhi
E: jhi@iki.fi
N: Jason Gloudon
N: Jeff Horwitz
E: jeff@smashing.org
U: jhorwitz
N: Jerry Gay
U: particle
E: Jerry.Gay@gmail.com
S: Seattle, WA, USA
N: Jesse Vincent
U: jesse
E: jesse@fsck.com
N: John Harrison
U: __ash__
E: ash@greaterthaninfinity.com
N: Jonathan Scott Duff
U: duff
E: duff@pobox.com
N: Jonathan "Duke" Leto
U: leto
U: dukeleto
E: jonathan@leto.net
W: http://leto.net
S: Portland, OR
N: Jonathan Worthington
U: jnthn
E: jnthn@jnthn.net
W: http://www.jnthn.net/
N: Joshua Gatcomb
N: Julian Albo
U: julianalbo
E: julian.notfound@gmail.com
N: Kevin Tew
U: tewk
E: tewk@tewk.com
N: Klaas-Jan Stol
U: kjs
E: parrotcode@gmail.com
N: Kyle Hasselbacher
E: kyleha@gmail.com
U: KyleHa
U: kyle
D: Test.pm improvements, ticket testing
N: Larry Wall
E: larry@wall.org
U: larry
N: Leopold Toetsch
U: leo
D: Patchmonster & release manager emeritus (0.0.13 - 0.4.5)
E: lt@toetsch.at
S: Herrnbaumgarten, Austria
N: Luke Palmer
E: luke@luqui.org
U: luqui
N: Mark Glines
U: infinoid
E: mark@glines.org
S: South Lake Tahoe, CA, USA
N: Mark Grimes
E: mgrimes@cpan.org
N: Martin Berends
E: mberends@autoexec.demon.nl
D: Rakudo patch(es)
N: Matt Diephouse
U: mdiep
E: matt@diephouse.com
N: Moritz A Lenz
E: moritz@faui2k3.org
U: moritz
D: Test infrastructure for Perl 6 and Rakudo
N: Nicholas Clark
U: nicholas
E: nick@ccl4.org
N: Notfound
E: julian.notfound@gmail.com
N: Nuno 'smash' Carvalho
U: smash
E: mestre.smash@gmail.com
N: Patrick R. Michaud
U: pmichaud
D: Perl 6 (Rakudo Perl) lead developer, pumpking
E: pmichaud@pobox.com
N: Paul Cochrane
U: paultcochrane
E: paultcochrane@gmail.com
N: Peter Gibbs
U: petergibbs
E: peter@emkel.co.za
N: Piers Cawley
U: pdcawley
D: The Second Perl 6 Summarizer after Bryan C. Warnock
E: pdcawley@bofh.org.uk
W: http://www.bofh.org.uk:8080/
N: Reini Urban
U: rurban
E: rurban@cpan.org
D: cygwin fixes
N: Robert Spier
D: Keeps us running
U: robert
E: robert@perl.org
N: Simon Cozens
U: simon
E: simon@simon-cozens.org
N: Solomon Foster
U: colomon
E: colomon@gmail.com
N: Stéphane Payrard
D: Various code fixes and improvements
N: Stephen Weeks
U: tene
D: Minor Rakudo patches
E: tene@allalone.org
N: Ujwal Reddy Malipeddi
E: ujwalic@gmail.com
D: Rakudo patch
N: Vasily Chekalkin
E: bacek@bacek.com
D: Core and Rakudo patches
N: Will "Coke" Coleda
U: coke
E: will@coleda.com
N: Zach Morgan
E: zpmorgan@gmail.com
D: Rakudo patch
=cut
#! perl
# Copyright (C) 2009 The Perl Foundation
use 5.008;
use strict;
use warnings;
use Getopt::Long;
use Cwd;
MAIN: {
my %options;
GetOptions(\%options, 'help!', 'parrot-config=s',
'gen-parrot!', 'gen-parrot-prefix=s', 'gen-parrot-option=s@');
# Print help if it's requested
if ($options{'help'}) {
print_help();
exit(0);
}
# Determine the revision of Parrot we require
open my $REQ, '<', "build/PARROT_REVISION"
or die "cannot open build/PARROT_REVISION: $!\n";
my ($reqsvn, $reqpar) = split(' ', <$REQ>);
$reqsvn += 0;
close $REQ;
# Update/generate parrot build if needed
if ($options{'gen-parrot'}) {
my @opts = @{ $options{'gen-parrot-option'} || [] };
my $prefix = $options{'gen-parrot-prefix'} || cwd()."/parrot_install";
# parrot's Configure.pl mishandles win32 backslashes in --prefix
$prefix =~ s{\\}{/}g;
my @command = ($^X, "build/gen_parrot.pl", "--prefix=$prefix", ($^O !~ /win32/i ? "--optimize" : ()), @opts);
print "Generating Parrot ...\n";
print "@command\n\n";
system @command;
}
# Get a list of parrot-configs to invoke.
my @parrot_config_exe = qw(
parrot_install/bin/parrot_config
../../parrot_config
parrot_config
);
if (exists $options{'gen-parrot-prefix'}) {
unshift @parrot_config_exe,
$options{'gen-parrot-prefix'} . '/bin/parrot_config';
}
if ($options{'parrot-config'} && $options{'parrot-config'} ne '1') {
@parrot_config_exe = ($options{'parrot-config'});
}
# Get configuration information from parrot_config
my %config = read_parrot_config(@parrot_config_exe);
my $parrot_errors = '';
if (!%config) {
$parrot_errors .= "Unable to locate parrot_config\n";
}
elsif ($reqsvn > $config{'revision'} &&
($reqpar eq '' || version_int($reqpar) > version_int($config{'VERSION'}))) {
$parrot_errors .= "Parrot revision r$reqsvn required (currently r$config{'revision'})\n";
}
if ($parrot_errors) {
die <<"END";
===SORRY!===
$parrot_errors
To automatically checkout (svn) and build a copy of parrot r$reqsvn,
try re-running Configure.pl with the '--gen-parrot' option.
Or, use the '--parrot-config' option to explicitly specify
the location of parrot_config to be used to build Rakudo Perl.
END
}
# Verify the Parrot installation is sufficient for building Rakudo
verify_parrot(%config);
# Create the Makefile using the information we just got
create_makefile(%config);
my $make = $config{'make'};
{
no warnings;
print "Cleaning up ...\n";
if (open my $CLEAN, '-|', "$make clean") {
my @slurp = <$CLEAN>;
close $CLEAN;
}
}
print <<"END";
You can now use '$make' to build Rakudo Perl.
After that, you can use '$make test' to run some local tests,
or '$make spectest' to check out (via svn) a copy of the Perl 6
official test suite and run its tests.
END
exit 0;
}
sub read_parrot_config {
my @parrot_config_exe = @_;
my %config = ();
for my $exe (@parrot_config_exe) {
no warnings;
if (open my $PARROT_CONFIG, '-|', "$exe --dump") {
print "\nReading configuration information from $exe ...\n";
while (<$PARROT_CONFIG>) {
if (/(\w+) => '(.*)'/) { $config{$1} = $2 }
}
close $PARROT_CONFIG or die $!;
last if %config;
}
}
return %config;
}
sub verify_parrot {
print "Verifying Parrot installation...\n";
my %config = @_;
my $PARROT_VERSION = $config{'versiondir'};
my $PARROT_LIB_DIR = $config{'libdir'}.$PARROT_VERSION;
my $PARROT_SRC_DIR = $config{'srcdir'}.$PARROT_VERSION;
my $PARROT_INCLUDE_DIR = $config{'includedir'}.$PARROT_VERSION;
my $PARROT_TOOLS_DIR = "$PARROT_LIB_DIR/tools";
my @required_files = (
"$PARROT_LIB_DIR/library/PGE/Perl6Grammar.pbc",
"$PARROT_LIB_DIR/library/PCT/HLLCompiler.pbc",
"$PARROT_LIB_DIR/languages/nqp/nqp.pbc",
"$PARROT_TOOLS_DIR/build/ops2c.pl",
"$PARROT_TOOLS_DIR/build/pmc2c.pl",
"$PARROT_SRC_DIR",
"$PARROT_SRC_DIR/pmc",
"$PARROT_INCLUDE_DIR",
"$PARROT_INCLUDE_DIR/pmc",
);
my @missing = map { " $_" } grep { ! -e } @required_files;
if (@missing) {
my $missing = join("\n", @missing);
die <<"END";
===SORRY!===
I'm missing some needed files from the Parrot installation:
$missing
(Perhaps you need to use Parrot's "make install-dev" or
install the "parrot-devel" package for your system?)
END
}
}
# Generate a Makefile from a configuration
sub create_makefile {
my %config = @_;
my $maketext = slurp( 'build/Makefile.in' );
$config{'win32_libparrot_copy'} = $^O eq 'MSWin32' ? 'copy $(PARROT_BIN_DIR)\libparrot.dll .' : '';
$maketext =~ s/@(\w+)@/$config{$1}/g;
if ($^O eq 'MSWin32') {
$maketext =~ s{/}{\\}g;
$maketext =~ s{\\\*}{\\\\*}g;
$maketext =~ s{http:\S+}{ do {my $t = $&; $t =~ s'\\'/'g; $t} }eg;
}
my $outfile = 'Makefile';
print "\nCreating $outfile ...\n";
open(my $MAKEOUT, '>', $outfile) ||
die "Unable to write $outfile\n";
print {$MAKEOUT} $maketext;
close $MAKEOUT or die $!;
return;
}
sub slurp {
my $filename = shift;
open my $fh, '<', $filename or die "Unable to read $filename\n";
local $/ = undef;
my $maketext = <$fh>;
close $fh or die $!;
return $maketext;
}
sub version_int {
sprintf('%d%03d%03d', split(/\./, $_[0]))
}
# Print some help text.
sub print_help {
print <<'END';
Configure.pl - Rakudo Configure
General Options:
--help Show this text
--gen-parrot Download and build a copy of Parrot to use
--gen-parrot-option='--option=value'
Set parrot config option when using --gen-parrot
--parrot-config=(config)
Use configuration information from config
END
return;
}
# Local Variables:
# mode: cperl
# cperl-indent-level: 4
# fill-column: 100
# End:
# vim: expandtab shiftwidth=4:
The Artistic License 2.0
Copyright (c) 2000-2006, The Perl Foundation.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
This license establishes the terms under which a given free software
Package may be copied, modified, distributed, and/or redistributed.
The intent is that the Copyright Holder maintains some artistic
control over the development of that Package while still keeping the
Package available as open source and free software.
You are always permitted to make arrangements wholly outside of this
license directly with the Copyright Holder of a given Package. If the
terms of this license do not permit the full use that you propose to
make of the Package, you should contact the Copyright Holder and seek
a different licensing arrangement.
Definitions
"Copyright Holder" means the individual(s) or organization(s)
named in the copyright notice for the entire Package.
"Contributor" means any party that has contributed code or other
material to the Package, in accordance with the Copyright Holder's
procedures.
"You" and "your" means any person who would like to copy,
distribute, or modify the Package.
"Package" means the collection of files distributed by the
Copyright Holder, and derivatives of that collection and/or of
those files. A given Package may consist of either the Standard
Version, or a Modified Version.
"Distribute" means providing a copy of the Package or making it
accessible to anyone else, or in the case of a company or
organization, to others outside of your company or organization.
"Distributor Fee" means any fee that you charge for Distributing
this Package or providing support for this Package to another
party. It does not mean licensing fees.
"Standard Version" refers to the Package if it has not been
modified, or has been modified only in ways explicitly requested
by the Copyright Holder.
"Modified Version" means the Package, if it has been changed, and
such changes were not explicitly requested by the Copyright
Holder.
"Original License" means this Artistic License as Distributed with
the Standard Version of the Package, in its current version or as
it may be modified by The Perl Foundation in the future.
"Source" form means the source code, documentation source, and
configuration files for the Package.
"Compiled" form means the compiled bytecode, object code, binary,
or any other form resulting from mechanical transformation or
translation of the Source form.
Permission for Use and Modification Without Distribution
(1) You are permitted to use the Standard Version and create and use
Modified Versions for any purpose without restriction, provided that
you do not Distribute the Modified Version.
Permissions for Redistribution of the Standard Version
(2) You may Distribute verbatim copies of the Source form of the
Standard Version of this Package in any medium without restriction,
either gratis or for a Distributor Fee, provided that you duplicate
all of the original copyright notices and associated disclaimers. At
your discretion, such verbatim copies may or may not include a
Compiled form of the Package.
(3) You may apply any bug fixes, portability changes, and other
modifications made available from the Copyright Holder. The resulting
Package will still be considered the Standard Version, and as such
will be subject to the Original License.
Distribution of Modified Versions of the Package as Source
(4) You may Distribute your Modified Version as Source (either gratis
or for a Distributor Fee, and with or without a Compiled form of the
Modified Version) provided that you clearly document how it differs
from the Standard Version, including, but not limited to, documenting
any non-standard features, executables, or modules, and provided that
you do at least ONE of the following:
(a) make the Modified Version available to the Copyright Holder
of the Standard Version, under the Original License, so that the
Copyright Holder may include your modifications in the Standard