From c9a812a5ccc5e2639ae4e1314f5f24b3d4518c68 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Wed, 3 Jul 2019 10:53:21 +0100 Subject: Allow customising the example config directory at build time. Fixes #1626. --- configure | 54 ++++++++++++++++++++++++++++----------------------- make/template/main.mk | 26 ++++++++++++++----------- 2 files changed, 45 insertions(+), 35 deletions(-) diff --git a/configure b/configure index 63da8d6cd..6d729292f 100755 --- a/configure +++ b/configure @@ -55,6 +55,7 @@ my ($opt_binary_dir, $opt_disable_auto_extras, $opt_disable_interactive, $opt_distribution_label, + $opt_example_dir, $opt_gid, $opt_log_dir, $opt_manual_dir, @@ -86,6 +87,7 @@ exit 1 unless GetOptions( 'disable-auto-extras' => \$opt_disable_auto_extras, 'disable-interactive' => \$opt_disable_interactive, 'distribution-label=s' => \$opt_distribution_label, + 'example-dir=s' => \$opt_example_dir, 'gid=s' => \$opt_gid, 'log-dir=s' => \$opt_log_dir, 'manual-dir=s' => \$opt_manual_dir, @@ -122,6 +124,7 @@ our $interactive = !( defined $opt_disable_auto_extras || defined $opt_disable_interactive || defined $opt_distribution_label || + defined $opt_example_dir || defined $opt_gid || defined $opt_log_dir || defined $opt_manual_dir || @@ -183,23 +186,25 @@ if (defined $opt_socketengine) { $config{SOCKETENGINE} = $opt_socketengine // $socketengines[0]; if (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{DATA_DIR} = $opt_data_dir // '/var/inspircd'; - $config{LOG_DIR} = $opt_log_dir // '/var/log/inspircd'; - $config{MANUAL_DIR} = $opt_manual_dir // '/usr/share/man/man1'; - $config{MODULE_DIR} = $opt_module_dir // '/usr/lib/inspircd'; - $config{SCRIPT_DIR} = $opt_script_dir // '/usr/share/inspircd' + $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{DATA_DIR} = $opt_data_dir // '/var/inspircd'; + $config{EXAMPLE_DIR} = $opt_example_dir // '/usr/share/doc/inspircd'; + $config{LOG_DIR} = $opt_log_dir // '/var/log/inspircd'; + $config{MANUAL_DIR} = $opt_manual_dir // '/usr/share/man/man1'; + $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{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} = $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}; } # Parse --gid=123 or --gid=foo and extract the group id. @@ -410,14 +415,15 @@ for my $file () { print_format <<"EOM"; <|GREEN Paths:|> - <|GREEN Base:|> $config{BASE_DIR} - <|GREEN Binary:|> $config{BINARY_DIR} - <|GREEN Config:|> $config{CONFIG_DIR} - <|GREEN Data:|> $config{DATA_DIR} - <|GREEN Log:|> $config{LOG_DIR} - <|GREEN Manual:|> $config{MANUAL_DIR} - <|GREEN Module:|> $config{MODULE_DIR} - <|GREEN Script:|> $config{SCRIPT_DIR} + <|GREEN Base:|> $config{BASE_DIR} + <|GREEN Binary:|> $config{BINARY_DIR} + <|GREEN Config:|> $config{CONFIG_DIR} + <|GREEN Data:|> $config{DATA_DIR} + <|GREEN Example:|> $config{EXAMPLE_DIR} + <|GREEN Log:|> $config{LOG_DIR} + <|GREEN Manual:|> $config{MANUAL_DIR} + <|GREEN Module:|> $config{MODULE_DIR} + <|GREEN Script:|> $config{SCRIPT_DIR} <|GREEN Execution Group:|> $config{GROUP} ($config{GID}) <|GREEN Execution User:|> $config{USER} ($config{UID}) diff --git a/make/template/main.mk b/make/template/main.mk index e39a24f87..d77d59fa5 100644 --- a/make/template/main.mk +++ b/make/template/main.mk @@ -38,14 +38,17 @@ CORECXXFLAGS = -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -pipe -Iinc LDLIBS = -lstdc++ CORELDFLAGS = -rdynamic -L. PICLDFLAGS = -fPIC -shared -rdynamic -BASE = "$(DESTDIR)@BASE_DIR@" + +BASE = "$(DESTDIR)@BASE_DIR@" +BINPATH = "$(DESTDIR)@BINARY_DIR@" CONPATH = "$(DESTDIR)@CONFIG_DIR@" +DATPATH = "$(DESTDIR)@DATA_DIR@" +EXAPATH = "$(DESTDIR)@EXAMPLE_DIR@" +LOGPATH = "$(DESTDIR)@LOG_DIR@" MANPATH = "$(DESTDIR)@MANUAL_DIR@" MODPATH = "$(DESTDIR)@MODULE_DIR@" -LOGPATH = "$(DESTDIR)@LOG_DIR@" -DATPATH = "$(DESTDIR)@DATA_DIR@" -BINPATH = "$(DESTDIR)@BINARY_DIR@" SCRPATH = "$(DESTDIR)@SCRIPT_DIR@" + INSTALL ?= install INSTMODE_DIR ?= 0755 INSTMODE_BIN ?= 0755 @@ -204,11 +207,12 @@ finishmessage: target install: target @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(BASE) + @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(BINPATH) + @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(CONPATH) @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(DATPATH) + @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(EXAPATH)/services + @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(EXAPATH)/sql @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(LOGPATH) - @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(BINPATH) - @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(CONPATH)/examples/services - @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(CONPATH)/examples/sql @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(MANPATH) @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(MODPATH) @-$(INSTALL) -d -g @GID@ -o @UID@ -m $(INSTMODE_DIR) $(SCRPATH) @@ -225,9 +229,9 @@ endif -$(INSTALL) -g @GID@ -o @UID@ -m $(INSTMODE_TXT) @CONFIGURE_DIRECTORY@/inspircd.1 $(MANPATH) 2>/dev/null -$(INSTALL) -g @GID@ -o @UID@ -m $(INSTMODE_TXT) @CONFIGURE_DIRECTORY@/inspircd-genssl.1 $(MANPATH) 2>/dev/null -$(INSTALL) -g @GID@ -o @UID@ -m $(INSTMODE_BIN) tools/genssl $(BINPATH)/inspircd-genssl 2>/dev/null - -$(INSTALL) -g @GID@ -o @UID@ -m $(INSTMODE_TXT) docs/conf/*.example $(CONPATH)/examples - -$(INSTALL) -g @GID@ -o @UID@ -m $(INSTMODE_TXT) docs/conf/services/*.example $(CONPATH)/examples/services - -$(INSTALL) -g @GID@ -o @UID@ -m $(INSTMODE_TXT) docs/sql/*.sql $(CONPATH)/examples/sql + -$(INSTALL) -g @GID@ -o @UID@ -m $(INSTMODE_TXT) docs/conf/*.example $(EXAPATH) + -$(INSTALL) -g @GID@ -o @UID@ -m $(INSTMODE_TXT) docs/conf/services/*.example $(EXAPATH)/services + -$(INSTALL) -g @GID@ -o @UID@ -m $(INSTMODE_TXT) docs/sql/*.sql $(EXAPATH)/sql -$(INSTALL) -g @GID@ -o @UID@ -m $(INSTMODE_PRV) *.pem $(CONPATH) 2>/dev/null @echo "" @echo "*************************************" @@ -241,7 +245,7 @@ endif @echo ' Data:' $(DATPATH) @echo 'To start the ircd, run:' $(SCRPATH)/inspircd start @echo 'Remember to create your config file:' $(CONPATH)/inspircd.conf - @echo 'Examples are available at:' $(CONPATH)/examples/ + @echo 'Examples are available at:' $(EXAPATH) GNUmakefile: make/template/main.mk src/version.sh configure @CONFIGURE_CACHE_FILE@ ./configure --update -- cgit v1.2.3