Heavily improved ./install.

This commit is contained in:
Elijah Perrault committed 2011-03-07 20:44:30 -07:00
1 parent 68c4ca7b4a
commit 2836ebc6a3
2 files changed
+96 -36

No files matched your search

+1 -1
View File
@@ -3,7 +3,7 @@ Auto IRC Bot 3.0: Change Log
3.0 Indev 3.0 Indev
=============================================================================== ===============================================================================
* Heavily improved ./install.
3.0 Alpha 7 3.0 Alpha 7
=============================================================================== ===============================================================================
+95 -35
View File
@@ -6,8 +6,11 @@
package Install; package Install;
use strict; use strict;
use warnings; use warnings;
use Getopt::Long;
use English qw(-no_match_vars); use English qw(-no_match_vars);
use FindBin qw($Bin); use FindBin qw($Bin);
use File::Copy;
use File::Path qw(make_path remove_tree);
our $Bin = $Bin; our $Bin = $Bin;
BEGIN { unshift(@INC, "$Bin/lib"); } BEGIN { unshift(@INC, "$Bin/lib"); }
use Lib::Install; use Lib::Install;
@@ -16,39 +19,65 @@ use Lib::Install;
our $VERSION = 1.00; our $VERSION = 1.00;
our $ERROR = 0; our $ERROR = 0;
# Iterate through the arguments passed to us. # Store the arguments passed to us.
my $features = 'base ssl sqlite'; my ($opt_help, $opt_syswide, $PREFIX, $feature_nossl, $feature_sasl, $feature_ipv6, $feature_mysql, $feature_pgsql);
if (defined $ARGV[0]) { GetOptions(
foreach (@ARGV) { '--disable-ssl' => \$feature_nossl,
if ($_ eq '-h' or $_ eq '--help') { '--enable-sasl' => \$feature_sasl,
println '*** ./install help ***'; '--enable-ipv6' => \$feature_ipv6,
println ' --enable-sasl - Enable support for SASL.'; '--with-mysql' => \$feature_mysql,
println ' --enable-ipv6 - Enable support for IPv6.'; '--with-pgsql' => \$feature_pgsql,
println ' --disable-ssl - Disable support for SSL.'; '--prefix=s' => \$PREFIX,
println '*** End of Help ***'; '--syswide' => \$opt_syswide,
exit 1; '--help' => \$opt_help,
} );
elsif ($_ eq '--enable-sasl') {
$features .= ' sasl'; # If --help was passed.
} if ($opt_help) {
elsif ($_ eq '--disable-ssl') { print <<"HELP";
$features =~ s/ ssl//g;
} Auto IRC Bot Installation Wizard (v1.00).
elsif ($_ eq '--enable-ipv6') { Usage: perl install [options]
$features .= ' ipv6';
} Options:
elsif ($_ eq '--with-mysql') { --disable-ssl Disables SSL support.
$features =~ s/(sqlite|pgsql)/mysql/g; --enable-sasl Enables SASL support.
} --enable-ipv6 Enables IPv6 support.
elsif ($_ eq '--with-pgsql') { --with-mysql Uses MySQL instead of SQLite.
$features =~ s/(sqlite|mysql)/pgsql/g; --with-pgsql Uses PostgreSQL instead of SQLite.
} --syswide Prefixes bin/ files with auto- (excluding `auto` itself), as
else { well as installs build/ to lib/ instead. Always use this
println "Warning: Unknown option '$_'"; when installing to /usr.
}
} --prefix=PREFIX Installs files to PREFIX
[$Bin]
HELP
exit 1;
} }
# Set features.
my $features = 'base';
$features .= ' ssl' unless $feature_nossl;
$features .= ' sasl' if $feature_sasl;
$features .= ' ipv6' if $feature_ipv6;
if ($feature_mysql) { $features .= ' mysql' }
elsif ($feature_pgsql) { $features .= ' pgsql' }
else { $features .= ' sqlite' }
# Where to install.
my $upref;
if (!$PREFIX) {
$PREFIX = $Bin;
$upref = 0;
}
else { $upref = 1 }
# Adjust installation to be more appropriate for system-wide installs.
my $libbuild = 0;
if ($opt_syswide) { $libbuild = 1 }
# Check Perl version. # Check Perl version.
println "Checking Perl version..... $^V"; println "Checking Perl version..... $^V";
eval { eval {
@@ -130,15 +159,46 @@ else {
# Create build. # Create build.
println "\0"; println "\0";
println "Building....."; println "Building.....";
if (!-d "$Bin/build") { if (!-d $PREFIX) { make_path($PREFIX) }
mkdir "$Bin/build"; my $libdir;
if ($libbuild) { $libdir = "$PREFIX/lib/autobot/3.0.0" }
else { $libdir = "$PREFIX/lib" }
my $builddir;
if ($libbuild) { $builddir = "$libdir/build" }
else { $builddir = "$PREFIX/build" }
if (!-d $builddir) { make_path($builddir) }
build($features, $builddir, $opt_syswide);
# Install.
if ($upref) {
require File::Copy::Recursive;
File::Copy::Recursive->import('rcopy');
my $langdir;
if ($libbuild) { $langdir = "$libdir/lang" }
else { $langdir = "$PREFIX/lang" }
my $moddir;
if ($libbuild) { $moddir = "$libdir/modules" }
else { $moddir = "$PREFIX/modules" }
println "Installing.....";
if (!-d "$PREFIX/bin") { make_path("$PREFIX/bin") }
if (!-d $libdir) { make_path($libdir) }
if (!-d $langdir) { make_path($langdir) }
if (!-d $moddir) { make_path($moddir) }
copy("$Bin/bin/auto", "$PREFIX/bin/auto");
copy("$Bin/bin/buildmod", "$PREFIX/bin/auto-buildmod");
copy("$Bin/bin/genssl", "$PREFIX/bin/auto-genssl");
rcopy("$Bin/lib/*", "$libdir/");
remove_tree("$libdir/File");
} }
build($features);
println 'Done.'; println 'Done.';
println q{}; println q{};
installmods(); if ($libbuild) {
println 'To install modules, run the auto-buildmod utility on a module.';
}
else { installmods($PREFIX) }
println q{}; println q{};
# Success! # Success!