use File::Basename qw(basename);
use File::Copy ();
-use File::Spec::Functions qw(rel2abs);
+use File::Spec::Functions qw(catfile catdir rel2abs);
use FindBin qw($RealDir);
use Getopt::Long qw(GetOptions);
use POSIX qw(getgid getuid);
$opt_log_dir,
$opt_manual_dir,
$opt_module_dir,
+ $opt_portable,
$opt_prefix,
$opt_script_dir,
$opt_socketengine,
'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,
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 ||
}
$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';
$config{MODULE_DIR} = $opt_module_dir // '/usr/lib/inspircd';
$config{SCRIPT_DIR} = $opt_script_dir // '/usr/share/inspircd'
} else {
- $config{BASE_DIR} = $opt_prefix // $config{BASE_DIR} // rel2abs 'run';
- $config{BINARY_DIR} = $opt_binary_dir // $config{BINARY_DIR} // rel2abs $config{BASE_DIR} . '/bin';
- $config{CONFIG_DIR} = $opt_config_dir // $config{CONFIG_DIR} // rel2abs $config{BASE_DIR} . '/conf';
- $config{DATA_DIR} = $opt_data_dir // $config{DATA_DIR} // rel2abs $config{BASE_DIR} . '/data';
- $config{EXAMPLE_DIR} = $opt_example_dir // $config{EXAMPLE_DIR} // $config{CONFIG_DIR} . '/examples';
- $config{LOG_DIR} = $opt_log_dir // $config{LOG_DIR} // rel2abs $config{BASE_DIR} . '/logs';
- $config{MANUAL_DIR} = $opt_manual_dir // $config{MANUAL_DIR} // rel2abs $config{BASE_DIR} . '/manuals';
- $config{MODULE_DIR} = $opt_module_dir // $config{MODULE_DIR} // rel2abs $config{BASE_DIR} . '/modules';
- $config{SCRIPT_DIR} = $opt_script_dir // $config{SCRIPT_DIR} // $config{BASE_DIR};
+ $config{BASE_DIR} = rel2abs $opt_prefix // $config{BASE_DIR} // catdir $RealDir, 'run';
+ $config{BINARY_DIR} = $opt_binary_dir // $config{BINARY_DIR} // catdir $config{BASE_DIR}, 'bin';
+ $config{CONFIG_DIR} = $opt_config_dir // $config{CONFIG_DIR} // catdir $config{BASE_DIR}, 'conf';
+ $config{DATA_DIR} = $opt_data_dir // $config{DATA_DIR} // catdir $config{BASE_DIR}, 'data';
+ $config{EXAMPLE_DIR} = $opt_example_dir // $config{EXAMPLE_DIR} // catdir $config{CONFIG_DIR}, 'examples';
+ $config{LOG_DIR} = $opt_log_dir // $config{LOG_DIR} // catdir $config{BASE_DIR}, 'logs';
+ $config{MANUAL_DIR} = $opt_manual_dir // $config{MANUAL_DIR} // catdir $config{BASE_DIR}, 'manuals';
+ $config{MODULE_DIR} = $opt_module_dir // $config{MODULE_DIR} // catdir $config{BASE_DIR}, 'modules';
+ $config{SCRIPT_DIR} = $opt_script_dir // $config{SCRIPT_DIR} // $config{BASE_DIR};
}
# Parse --gid=123 or --gid=foo and extract the group id.
to specify an unprivileged group to run as.
EOW
if (!prompt_bool $interactive, "Are you sure you want to build as the $group[0] group?", 0) {
+ # PACKAGERS: You do not need to delete this check. Use `--gid $(id -g)` or `--gid 0` instead.
say STDERR "If you are sure you want to build as the $group[0] group pass the --gid $group[2] flag." unless $interactive;
exit 1;
}
to specify an unprivileged user to run as.
EOW
if (!prompt_bool $interactive, "Are you sure you want to build as the $user[0] user?", 0) {
+ # PACKAGERS: You do not need to delete this check. Use `--uid $(id -u)` or `--uid 0` instead.
say STDERR "If you are sure you want to build as the $user[0] user pass the --uid $user[2] flag." unless $interactive;
exit 1;
}
<|GREEN Execution User:|> $config{USER} ($config{UID})
<|GREEN Socket Engine:|> $config{SOCKETENGINE}
-To build with these settings run '<|GREEN make -j${\get_cpu_count} install|>' now.
+To build with these settings run '<|GREEN make -j${\(get_cpu_count() + 1)} install|>' now.
EOM