diff options
author | Sadie Powell <sadie@witchery.services> | 2020-05-16 14:25:24 +0100 |
---|---|---|
committer | Sadie Powell <sadie@witchery.services> | 2020-05-16 14:25:24 +0100 |
commit | 87bb27a7a794d413bd75ea17d4e1f83e207c8bdc (patch) | |
tree | 25fbe66a0db74f36f561d99c52e86127ce52b218 | |
parent | 5a95d907d45c972c883fc0e763db1b960ecff55a (diff) |
Implement support for portable installations.
-rwxr-xr-x | configure | 19 | ||||
-rw-r--r-- | make/configure.pm | 6 | ||||
-rw-r--r-- | make/template/main.mk | 1 |
3 files changed, 22 insertions, 4 deletions
@@ -38,7 +38,7 @@ use warnings FATAL => qw(all); use File::Basename qw(basename); use File::Copy (); -use File::Spec::Functions qw(catdir rel2abs); +use File::Spec::Functions qw(catfile catdir rel2abs); use FindBin qw($RealDir); use Getopt::Long qw(GetOptions); use POSIX qw(getgid getuid); @@ -61,6 +61,7 @@ my ($opt_binary_dir, $opt_log_dir, $opt_manual_dir, $opt_module_dir, + $opt_portable, $opt_prefix, $opt_script_dir, $opt_socketengine, @@ -93,6 +94,7 @@ exit 1 unless GetOptions( 'log-dir=s' => \$opt_log_dir, 'manual-dir=s' => \$opt_manual_dir, 'module-dir=s' => \$opt_module_dir, + 'portable' => \$opt_portable, 'prefix=s' => \$opt_prefix, 'script-dir=s' => \$opt_script_dir, 'socketengine=s' => \$opt_socketengine, @@ -130,6 +132,7 @@ our $interactive = !( defined $opt_log_dir || defined $opt_manual_dir || defined $opt_module_dir || + defined $opt_portable || defined $opt_prefix || defined $opt_script_dir || defined $opt_socketengine || @@ -186,7 +189,19 @@ if (defined $opt_socketengine) { } $config{SOCKETENGINE} = $opt_socketengine // $socketengines[0]; -if (defined $opt_system) { +if (defined $opt_portable) { + print_error '--portable and --system can not be used together!' if defined $opt_system; + $config{DESTDIR} = catfile $RealDir, 'run', ''; + $config{BASE_DIR} = $opt_prefix // ''; + $config{BINARY_DIR} = $opt_binary_dir // 'bin'; + $config{CONFIG_DIR} = $opt_config_dir // 'conf'; + $config{DATA_DIR} = $opt_data_dir // 'data'; + $config{EXAMPLE_DIR} = $opt_example_dir // catdir $config{CONFIG_DIR}, 'examples'; + $config{LOG_DIR} = $opt_log_dir // 'logs'; + $config{MANUAL_DIR} = $opt_manual_dir // 'manuals'; + $config{MODULE_DIR} = $opt_module_dir // 'modules'; + $config{SCRIPT_DIR} = $opt_script_dir // $config{BASE_DIR}; +} elsif (defined $opt_system) { $config{BASE_DIR} = $opt_prefix // '/var/lib/inspircd'; $config{BINARY_DIR} = $opt_binary_dir // '/usr/sbin'; $config{CONFIG_DIR} = $opt_config_dir // '/etc/inspircd'; diff --git a/make/configure.pm b/make/configure.pm index 1ce5a1c1e..bd3591e3c 100644 --- a/make/configure.pm +++ b/make/configure.pm @@ -272,10 +272,12 @@ sub parse_templates($$$) { chomp $line; # Does this line match a variable? - while ($line =~ /(@(\w+?)@)/) { - my ($variable, $name) = ($1, $2); + while ($line =~ /(@(\w+?)(?:\|(\w*))?@)/) { + my ($variable, $name, $default) = ($1, $2, $3); if (defined $settings{$name}) { $line =~ s/\Q$variable\E/$settings{$name}/; + } elsif (defined $default) { + $line =~ s/\Q$variable\E/$default/; } else { print_warning "unknown template variable '$name' in $_!"; last; diff --git a/make/template/main.mk b/make/template/main.mk index a57595c9d..6bd1d390d 100644 --- a/make/template/main.mk +++ b/make/template/main.mk @@ -49,6 +49,7 @@ LDLIBS = -lstdc++ CORELDFLAGS = -rdynamic -L. PICLDFLAGS = -fPIC -shared -rdynamic +DESTDIR := $(if $(DESTDIR),$(DESTDIR),"@DESTDIR|@") BASE = "$(DESTDIR)@BASE_DIR@" BINPATH = "$(DESTDIR)@BINARY_DIR@" CONPATH = "$(DESTDIR)@CONFIG_DIR@" |