]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - configure
Implement support for portable installations.
[user/henk/code/inspircd.git] / configure
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';