aboutsummaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorpmichaud <pmichaud@pobox.com>2010-07-28 01:23:44 -0500
committerpmichaud <pmichaud@pobox.com>2010-07-28 01:23:44 -0500
commit2eff06a529aae02f2b6b38835ad38fbf7833597c (patch)
tree79ea7a0fda91bbd73fb658bf320a933a668723b1 /build
parent5d1a7bccc213b2444581345c06f756f1fa538c50 (diff)
Refactor pieces into skel/ .
Diffstat (limited to 'build')
-rw-r--r--build/Configure.pl231
-rw-r--r--build/Makefile.in136
-rw-r--r--build/gen_parrot.pl84
-rw-r--r--build/module-install.pl37
4 files changed, 0 insertions, 488 deletions
diff --git a/build/Configure.pl b/build/Configure.pl
deleted file mode 100644
index a0e687e..0000000
--- a/build/Configure.pl
+++ /dev/null
@@ -1,231 +0,0 @@
-#! 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', 'makefile-timing!',
- '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{'prefix'} || cwd()."/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(
- install/bin/parrot_config
- parrot_config
- );
- if (exists $options{'prefix'}) {
- unshift @parrot_config_exe,
- $options{'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 build the version of Parrot that came with this
-distribution ($reqpar), 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 Star.
-
-END
- }
-
- # Verify the Parrot installation is sufficient for building Rakudo
- verify_parrot(%config);
-
- # Create the Makefile using the information we just got
- create_makefile($options{'makefile-timing'}, %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 $EXE = $config{'exe'};
- my $PARROT_BIN_DIR = $config{'bindir'};
- 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_BIN_DIR/ops2c".$EXE,
- "$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 ($makefile_timing, %config) = @_;
-
- my $maketext = slurp( 'build/Makefile.in' );
-
- $config{'stagestats'} = $makefile_timing ? '--stagestats' : '';
- $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;
- }
-
- if ($makefile_timing) {
- $maketext =~ s{(?<!\\\n)^\t(?!\s*-?cd)(?=[^\n]*\S)}{\ttime }mg;
- }
-
- 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=/path/to/parrot_config
- Use config information from parrot_config executable
-Experimental developer's options:
- --makefile-timing Insert 'time' command all over in the Makefile
-END
-
- return;
-}
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
diff --git a/build/Makefile.in b/build/Makefile.in
deleted file mode 100644
index 9c85fb5..0000000
--- a/build/Makefile.in
+++ /dev/null
@@ -1,136 +0,0 @@
-# Copyright (C) 2006-2010, The Perl Foundation.
-# $Id$
-
-PARROT_ARGS =
-
-# values from parrot_config
-PARROT_BIN_DIR = @bindir@
-PARROT_VERSION = @versiondir@
-PARROT_INCLUDE_DIR = @includedir@$(PARROT_VERSION)
-PARROT_LIB_DIR = @libdir@$(PARROT_VERSION)
-PARROT_SRC_DIR = @srcdir@$(PARROT_VERSION)
-HAS_ICU = @has_icu@
-
-CC = @cc@
-CFLAGS = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @gc_flag@
-EXE = @exe@
-LD = @ld@
-LDFLAGS = @ldflags@ @ld_debug@
-LD_LOAD_FLAGS = @ld_load_flags@
-LIBPARROT = @inst_libparrot_ldflags@
-O = @o@
-LOAD_EXT = @load_ext@
-PERL = @perl@
-CP = @cp@
-MV = @mv@
-RM_F = @rm_f@
-MKPATH = $(PERL) -MExtUtils::Command -e mkpath
-CHMOD = $(PERL) -MExtUtils::Command -e chmod
-POD2MAN = @pod2man@
-
-# locations of parrot resources
-PARROT = $(PARROT_BIN_DIR)/parrot$(EXE)
-NQP_EXE = $(PARROT_BIN_DIR)/parrot-nqp$(EXE)
-PBC_TO_EXE = $(PARROT_BIN_DIR)/pbc_to_exe$(EXE)
-PARROT_TOOLS_DIR = $(PARROT_LIB_DIR)/tools
-PARROT_PERL_LIB = $(PARROT_TOOLS_DIR)/lib
-OPS2C = $(PARROT_BIN_DIR)/ops2c$(EXE)
-PMC2C = $(PERL) $(PARROT_TOOLS_DIR)/build/pmc2c.pl
-PMC2C_INCLUDES = --include src/pmc --include $(PARROT_SRC_DIR) --include $(PARROT_SRC_DIR)/pmc
-CINCLUDES = -I$(PARROT_INCLUDE_DIR) -I$(PARROT_INCLUDE_DIR)/pmc
-LINKARGS = $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT) @libs@ @icu_shared@
-
-# rakudo directories
-DYNEXT_DIR = dynext
-PMC_DIR = src/pmc
-OPS_DIR = src/ops
-PERL6_LANG_DIR = $(PARROT_LIB_DIR)/languages/perl6
-MANDIR = @mandir@
-DOCDIR = @prefix@/share/doc
-
-PERL6_EXE = perl6$(EXE)
-PERL6_LANG_DIR = $(PARROT_LIB_DIR)/languages/perl6
-
-MODULES = \
- modules/zavolaj \
- modules/MiniDBI \
- modules/xml-writer \
- modules/svg \
- modules/svg-plot \
- modules/Math-RungeKutta \
- modules/Math-Model \
- modules/mainline \
- modules/perl6-Config-INI \
- modules/perl6-File-Find \
- modules/perl6-Term-ANSIColor \
- modules/Algorithm-Viterbi \
-
-all: rakudo
-
-rakudo: rakudo/$(PERL6_EXE)
-rakudo/$(PERL6_EXE):
- cd rakudo && $(PERL) Configure.pl --parrot-config=$(PARROT_BIN_DIR)/parrot_config && $(MAKE)
-rakudo-test: rakudo/perl6
- cd rakudo && $(MAKE) test
-rakudo-install: rakudo
- cd rakudo && $(MAKE) install
- $(CP) $(PARROT_BIN_DIR)/$(PERL6_EXE) .
-
-modules-install:
- @echo "Installing 'ufo'"
- $(CP) modules/ufo/ufo $(PARROT_BIN_DIR)/ufo
- $(CHMOD) 755 $(PARROT_BIN_DIR)/ufo
- $(PERL) build/module-install.pl $(PERL6_EXE) $(DESTDIR)$(PERL6_LANG_DIR)/lib $(MODULES)
-
-install: rakudo-install modules-install
-
-## cleaning
-clean:
- $(RM_F) $(CLEANUPS)
-
-distclean: realclean
-
-realclean: clean
- $(RM_F) Makefile
-
-testclean:
-
-
-## miscellaneous targets
-# a listing of all targets meant to be called by users
-help:
- @echo ""
- @echo "Following targets are available for the user:"
- @echo ""
- @echo " all: perl6.pbc"
- @echo " install: Install stuff."
- @echo ""
- @echo "Maintenance:"
- @echo " perlcritic: Run Perl::Critic on all the Perl 5 code."
- @echo ""
- @echo "Cleaning:"
- @echo " clean: Basic cleaning up."
- @echo " distclean: Removes also anything built, in theory."
- @echo " realclean: Removes also files generated by 'Configure.pl'."
- @echo " testclean: Clean up test results."
- @echo ""
- @echo "Misc:"
- @echo " help: Print this help message."
- @echo ""
-
-config:
- $(PERL) Configure.pl
-
-$(PARROT):
-
-CRITIC_FILES=Configure.pl t/harness build/ tools/
-
-perlcritic:
- perlcritic -1 --profile tools/util/perlcritic.conf $(CRITIC_FILES)
-
-release: MANIFEST
- [ -n "$(VERSION)" ] || ( echo "\nTry 'make release VERSION=yyyy.mm'\n\n"; exit 1 )
- [ -d rakudo-star-$(VERSION) ] || ln -s . rakudo-star-$(VERSION)
- $(PERL) -ne 'print "rakudo-star-$(VERSION)/$$_"' MANIFEST | \
- tar -zcv -T - -f rakudo-star-$(VERSION).tar.gz
- rm rakudo-star-$(VERSION)
diff --git a/build/gen_parrot.pl b/build/gen_parrot.pl
deleted file mode 100644
index b5faaa2..0000000
--- a/build/gen_parrot.pl
+++ /dev/null
@@ -1,84 +0,0 @@
-#! perl
-# Copyright (C) 2009 The Perl Foundation
-
-=head1 TITLE
-
-gen_parrot.pl - script to obtain and build Parrot for Rakudo
-
-=head2 SYNOPSIS
-
- perl gen_parrot.pl [--parrot --configure=options]
-
-=head2 DESCRIPTION
-
-Maintains an appropriate copy of Parrot in the parrot/ subdirectory.
-The revision of Parrot to be used in the build is given by the
-build/PARROT_REVISION file.
-
-=cut
-
-use strict;
-use warnings;
-use 5.008;
-
-# Work out slash character to use.
-my $slash = $^O eq 'MSWin32' ? '\\' : '/';
-
-## determine what revision of Parrot we require
-open my $REQ, "build/PARROT_REVISION"
- || die "cannot open build/PARROT_REVISION\n";
-my ($reqsvn, $reqpar) = split(' ', <$REQ>);
-$reqsvn += 0;
-close $REQ;
-
-{
- no warnings;
- if (open my $REV, '-|', "parrot_install${slash}bin${slash}parrot_config revision") {
- my $revision = 0+<$REV>;
- close $REV;
- if ($revision >= $reqsvn) { print "Parrot r$revision already available (r$reqsvn required)\n";
- exit(0);
- }
- }
-}
-
-chdir('parrot-2.6.0') || die "Can't chdir to 'parrot-2.6.0': $!";
-
-
-## If we have a Makefile from a previous build, do a 'make realclean'
-if (-f 'Makefile') {
- my %config = read_parrot_config();
- my $make = $config{'make'};
- if ($make) {
- print "\nPerforming '$make realclean' ...\n";
- system_or_die($make, "realclean");
- }
-}
-
-print "\nConfiguring Parrot ...\n";
-my @config_command = ($^X, 'Configure.pl', @ARGV);
-print "@config_command\n";
-system_or_die( @config_command );
-
-print "\nBuilding Parrot ...\n";
-my %config = read_parrot_config();
-my $make = $config{'make'} or exit(1);
-system_or_die($make, 'install-dev');
-
-sub read_parrot_config {
- my %config = ();
- if (open my $CFG, "config_lib.pir") {
- while (<$CFG>) {
- if (/P0\["(.*?)"], "(.*?)"/) { $config{$1} = $2 }
- }
- close $CFG;
- }
- %config;
-}
-
-sub system_or_die {
- my @cmd = @_;
-
- system( @cmd ) == 0
- or die "Command failed (status $?): @cmd\n";
-}
diff --git a/build/module-install.pl b/build/module-install.pl
deleted file mode 100644
index cba32df..0000000
--- a/build/module-install.pl
+++ /dev/null
@@ -1,37 +0,0 @@
-#! perl
-
-use warnings;
-use strict;
-use File::Find;
-use File::Copy;
-use File::Path;
-use File::Basename;
-
-my $perl6 = shift @ARGV;
-my $perl6lib = shift @ARGV;
-
-my @pmfiles;
-while (@ARGV) {
- my $module = shift @ARGV;
- our $mlib = "$module/lib";
-
- find({ no_chdir=>1, wanted => \&libcopy }, $mlib);
-
- sub libcopy {
- return unless /\.pm6?/;
- my $source = $File::Find::name;
- my $target = $source;
- $target =~ s/$mlib/$perl6lib/;
- print "$source => $target\n";
- mkpath dirname($target);
- copy($source, $target) or die "copy failed: $!\n";
- push @pmfiles, $target;
- }
-}
-
-foreach my $pm (@pmfiles) {
- my $out = $pm; $out =~ s/\.pm6?$/.pir/;
- my @cmd = ('./perl6', '--target=pir', "--output=$out", $pm);
- print join(' ', @cmd), "\n";
- system(@cmd);
-}