]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Improve configure cache file handling.
authorPeter Powell <petpow@saberuk.com>
Wed, 1 Oct 2014 18:52:26 +0000 (19:52 +0100)
committerPeter Powell <petpow@saberuk.com>
Sun, 7 Dec 2014 22:36:42 +0000 (22:36 +0000)
- 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.

.gitignore
configure
make/configure.pm
make/template/main.mk

index 8b09fdb5e6310c16ed2b578e20a1ffad9aa31120..ca364ecfc94f0bef876218a63a9819f6b449552c 100644 (file)
@@ -2,9 +2,9 @@
 *.pem
 *.swp
 
-/.config.cache
-/.gdbargs
-/.modulemanager
+.*
+!.git*
+
 /BSDmakefile
 /GNUmakefile
 /build
index 55880fab68d8b884dc847ec2b135623f1d4d50d4..de45bdc794c759b00186a8a37ad06eac199dd279 100755 (executable)
--- 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";
index 7cf08e254067c7746dd1664f6f30f5edfa2f7424..9f47973532c5f1c403ff7520c2c8e7e15f8bb373 100644 (file)
@@ -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);
index c78d9047d0916ddc0ca56f3ba24a55e5c9f13444..b4a0d6f1c762121d0d7f2f4c0dfa700caaf23771 100644 (file)
@@ -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