summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Powell <petpow@saberuk.com>2014-10-01 19:52:26 +0100
committerPeter Powell <petpow@saberuk.com>2014-12-07 22:36:42 +0000
commit133b110534ec3386d8735020e8679236002b6ed1 (patch)
treed4850417eb23a175e68a20ab70b5b9912a242e44
parent500a0524d94d596b327ed9aaa17fd0a8ce9ebf96 (diff)
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.
-rw-r--r--.gitignore6
-rwxr-xr-xconfigure17
-rw-r--r--make/configure.pm30
-rw-r--r--make/template/main.mk7
4 files changed, 38 insertions, 22 deletions
diff --git a/.gitignore b/.gitignore
index 8b09fdb5e..ca364ecfc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,9 +2,9 @@
*.pem
*.swp
-/.config.cache
-/.gdbargs
-/.modulemanager
+.*
+!.git*
+
/BSDmakefile
/GNUmakefile
/build
diff --git a/configure b/configure
index 55880fab6..de45bdc79 100755
--- a/configure
+++ b/configure
@@ -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";
diff --git a/make/configure.pm b/make/configure.pm
index 7cf08e254..9f4797353 100644
--- a/make/configure.pm
+++ b/make/configure.pm
@@ -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);
diff --git a/make/template/main.mk b/make/template/main.mk
index c78d9047d..b4a0d6f1c 100644
--- a/make/template/main.mk
+++ b/make/template/main.mk
@@ -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