-
Notifications
You must be signed in to change notification settings - Fork 0
/
installer.pl
86 lines (70 loc) · 2.59 KB
/
installer.pl
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
# This file is an installer for the LedgerSMB system. It is designed to run
# explicitly with the perl interpreter (i.e. perl install.pl). Most behavior
# is system dependent using standard tools and so there is no issue there. To
# tell the program where to install the web app to, you can either set a
# WEBAPPDIR environment variable or pass this to the first argument on the
# command line.
#
# example on UNIX:
#
# WEBAPPDIR=/opt/ledgersmb/demo perl install.pl
#
# The following works on UNIX and Windows (if you change the path to the right
# location).
#
# perl install.pl /opt/ledgersmb/demo
#
# A Windows example migt be
#
# perl install.pl 'C://Application Data/LedgerSMB/Demo'
#
# While the directory will be created if it does not exist, the parent directory
# must exist or the program will throw an error.
#
use strict;
use warnings;
use File::Copy::Recursive qw(rcopy dircopy fcopy);
sub exit_with_help {
my ($msg, $exit) = shift;
print "\n\nWelcome to the LedgerSMB installer utility.\n\n";
print "To invoke try one of these syntaxes:\n";
print " perl install.pl /path/to/install/ \n";
print " WEBAPPDIR=/path/to/install perl install.pl\n\n";
print "If you are on Windows, remember to use forward slashes for paths, " .
"for example:\n";
print " perl install.pl 'C://path/to/install'\n\n";
die "$msg\n\n";
}
# HEADER: SETTING UP THE BUILD ENVIRONMENT
my $dest_dir = $ENV{WEBAPPDIR};
$dest_dir ||= $ARGV[0];
system('make');
system('make test');
exit_with_help('Web app directory not set', 1) if !defined $dest_dir;
# Basic set up
fcopy('ledgersmb.conf.default', 'ledgersmb.conf') unless -f 'ledgersmb.conf';
mkdir 'build';
mkdir 'build/webapp';
File::Copy::Recursive::rcopy_glob('*.pl', 'build/webapp') or die $!;
rcopy('bin', 'build/webapp/bin') or die $!;
# if necessary add other files here that we don't want installed
unlink "build/weball/installer.pl";
unlink "build/weball/install_interactive.pl";
mkdir 'build/PM';
rcopy('LedgerSMB.pm', 'build/PM') or die $!;
rcopy('LedgerSMB', 'build/PM/LedgerSMB') or die $!;
rcopy('Makefile.PL', 'build/PM') or die $!;
dircopy('t', 'build/PM/t') or die $!;
# the following tests won't work under any circumstances from PM
unlink('build/PM/t/62-api.t');
unlink('build/PM/t/63-lwp.t');
# HEADER: BUILDING AND INSTALLING THE APPLICATION
chdir 'build/PM';
system('perl Makefile.PL');
system('make');
system('make install');
chdir '../..';
dircopy('build/webapp', $dest_dir);
fcopy('ledgersmb.conf.default', "$dest_dir/ledgersmb.conf")
unless -f "$dest_dir/ledgersmb.conf";
exit(0);