]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Implement support for portable installations.
authorSadie Powell <sadie@witchery.services>
Sat, 16 May 2020 13:25:24 +0000 (14:25 +0100)
committerSadie Powell <sadie@witchery.services>
Sat, 16 May 2020 13:25:24 +0000 (14:25 +0100)
configure
make/configure.pm
make/template/main.mk

index e10b7681e57a60ba56af15abff0f3570de830f02..9d064c693d97455c1fed77378dccd5e45e7997e1 100755 (executable)
--- a/configure
+++ b/configure
@@ -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';
index 1ce5a1c1e24a942c6de774cd400d4c62f3c30f49..bd3591e3ca3c798d5bbabc37fc4b25903897eadf 100644 (file)
@@ -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;
index a57595c9da009f5b83f2be6484edf26bff8440fe..6bd1d390d82ff8ac81f7d554a3edd370537c10f8 100644 (file)
@@ -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@"