mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-09 10:39:02 -04:00
Improve configure cache file handling.
- Add a version number to the configure cache file. - Disable configure cache file in non-interactive mode. - Rename configure cache file to .configure.cache to avoid 2.0 files. - Use run_test to produce the "reading .configure.cache" message.
This commit is contained in:
parent
500a0524d9
commit
133b110534
6
.gitignore
vendored
6
.gitignore
vendored
@ -2,9 +2,9 @@
|
||||
*.pem
|
||||
*.swp
|
||||
|
||||
/.config.cache
|
||||
/.gdbargs
|
||||
/.modulemanager
|
||||
.*
|
||||
!.git*
|
||||
|
||||
/BSDmakefile
|
||||
/GNUmakefile
|
||||
/build
|
||||
|
17
configure
vendored
17
configure
vendored
@ -119,10 +119,17 @@ our $interactive = !(
|
||||
my %version = get_version();
|
||||
print_format "<|BOLD Configuring InspIRCd $version{MAJOR}.$version{MINOR}.$version{PATCH}+$version{LABEL} on $^O.|>\n";
|
||||
|
||||
our %config = read_configure_cache();
|
||||
|
||||
print "Checking for cache from previous configure... ";
|
||||
print %config ? "found\n" : "not found\n";
|
||||
our %config;
|
||||
if ($interactive) {
|
||||
%config = read_configure_cache();
|
||||
run_test CONFIGURE_CACHE_FILE, %config;
|
||||
if (!defined $config{VERSION}) {
|
||||
$config{VERSION} = CONFIGURE_CACHE_VERSION;
|
||||
} elsif ($config{VERSION} != CONFIGURE_CACHE_VERSION) {
|
||||
print_warning "ignoring contents of ${\CONFIGURE_CACHE_FILE} as it was generated by an incompatible version of $0!";
|
||||
%config = ('VERSION', CONFIGURE_CACHE_VERSION);
|
||||
}
|
||||
}
|
||||
|
||||
$config{CXX} = defined $ENV{CXX} && !system("$ENV{CXX} -v > /dev/null 2>&1") ? $ENV{CXX} : find_compiler();
|
||||
if ($config{CXX} eq "") {
|
||||
@ -290,7 +297,7 @@ if (<src/modules/m_ssl_*.cpp> && prompt_bool $interactive, 'Would you like to ge
|
||||
system './tools/genssl', 'auto';
|
||||
}
|
||||
|
||||
write_configure_cache %config;
|
||||
write_configure_cache %config if $interactive;
|
||||
parse_templates \%config, \%compiler;
|
||||
|
||||
print_format <<"EOM";
|
||||
|
@ -37,7 +37,12 @@ use File::Basename qw(basename);
|
||||
use make::console;
|
||||
use make::utilities;
|
||||
|
||||
our @EXPORT = qw(cmd_clean
|
||||
use constant CONFIGURE_CACHE_FILE => '.configure.cache';
|
||||
use constant CONFIGURE_CACHE_VERSION => '1';
|
||||
|
||||
our @EXPORT = qw(CONFIGURE_CACHE_FILE
|
||||
CONFIGURE_CACHE_VERSION
|
||||
cmd_clean
|
||||
cmd_help
|
||||
cmd_update
|
||||
read_configure_cache
|
||||
@ -81,6 +86,7 @@ sub __get_template_settings($$) {
|
||||
}
|
||||
|
||||
# Miscellaneous information
|
||||
$settings{CONFIGURE_CACHE_FILE} = CONFIGURE_CACHE_FILE;
|
||||
$settings{SYSTEM_NAME} = lc $^O;
|
||||
chomp($settings{SYSTEM_NAME_VERSION} = `uname -sr 2>/dev/null`);
|
||||
|
||||
@ -88,7 +94,7 @@ sub __get_template_settings($$) {
|
||||
}
|
||||
|
||||
sub cmd_clean {
|
||||
unlink '.config.cache';
|
||||
unlink CONFIGURE_CACHE_FILE;
|
||||
}
|
||||
|
||||
sub cmd_help {
|
||||
@ -159,7 +165,7 @@ EOH
|
||||
}
|
||||
|
||||
sub cmd_update {
|
||||
print_error "You have not run $0 before. Please do this before trying to update the generated files." unless -f '.config.cache';
|
||||
print_error "You have not run $0 before. Please do this before trying to update the generated files." unless -f CONFIGURE_CACHE_FILE;
|
||||
print "Updating...\n";
|
||||
my %config = read_configure_cache();
|
||||
my %compiler = get_compiler_info($config{CXX});
|
||||
@ -169,23 +175,23 @@ sub cmd_update {
|
||||
}
|
||||
|
||||
sub read_configure_cache {
|
||||
my %cfg = ();
|
||||
open(CACHE, '.config.cache') or return %cfg;
|
||||
my %config;
|
||||
open(CACHE, CONFIGURE_CACHE_FILE) or return %config;
|
||||
while (my $line = <CACHE>) {
|
||||
next if $line =~ /^\s*($|\#)/;
|
||||
my ($key, $value) = ($line =~ /^(\S+)="(.*)"$/);
|
||||
$cfg{$key} = $value;
|
||||
$config{$key} = $value;
|
||||
}
|
||||
close(CACHE);
|
||||
return %cfg;
|
||||
return %config;
|
||||
}
|
||||
|
||||
sub write_configure_cache(%) {
|
||||
print_format "Writing <|GREEN .config.cache|> ...\n";
|
||||
my %cfg = @_;
|
||||
open(CACHE, '>.config.cache') or print_error "unable to write .config.cache: $!";
|
||||
while (my ($key, $value) = each %cfg) {
|
||||
$value = "" unless defined $value;
|
||||
print_format "Writing <|GREEN ${\CONFIGURE_CACHE_FILE}|> ...\n";
|
||||
my %config = @_;
|
||||
open(CACHE, '>', CONFIGURE_CACHE_FILE) or print_error "unable to write ${\CONFIGURE_CACHE_FILE}: $!";
|
||||
while (my ($key, $value) = each %config) {
|
||||
$value = '' unless defined $value;
|
||||
print CACHE "$key=\"$value\"\n";
|
||||
}
|
||||
close(CACHE);
|
||||
|
@ -261,7 +261,10 @@ install: target
|
||||
@echo 'Remember to create your config file:' $(CONPATH)/inspircd.conf
|
||||
@echo 'Examples are available at:' $(CONPATH)/examples/
|
||||
|
||||
GNUmakefile BSDmakefile: make/template/main.mk src/version.sh configure .config.cache
|
||||
@TARGET BSD_MAKE CONFIGURE_CACHE_FILE = @CONFIGURE_CACHE_FILE@
|
||||
@TARGET GNU_MAKE CONFIGURE_CACHE_FILE = $(wildcard @CONFIGURE_CACHE_FILE@)
|
||||
|
||||
GNUmakefile BSDmakefile: make/template/main.mk src/version.sh configure $(CONFIGURE_CACHE_FILE)
|
||||
./configure -update
|
||||
@TARGET BSD_MAKE .MAKEFILEDEPS: BSDmakefile
|
||||
|
||||
@ -284,7 +287,6 @@ deinstall:
|
||||
-rm -f $(BASE)/org.inspircd.plist
|
||||
|
||||
configureclean:
|
||||
rm -f .config.cache
|
||||
rm -f BSDmakefile
|
||||
rm -f GNUmakefile
|
||||
rm -f include/config.h
|
||||
@ -293,6 +295,7 @@ configureclean:
|
||||
rm -f inspircd-genssl.1
|
||||
-rm -f inspircd.service
|
||||
-rm -f org.inspircd.plist
|
||||
-rm -f @CONFIGURE_CACHE_FILE@
|
||||
|
||||
distclean: clean configureclean
|
||||
-rm -rf $(SOURCEPATH)/run
|
||||
|
Loading…
x
Reference in New Issue
Block a user