]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Merge pull request #1159 from SaberUK/master+configure
authorAttila Molnar <attilamolnar@hush.com>
Thu, 24 Mar 2016 09:20:07 +0000 (10:20 +0100)
committerAttila Molnar <attilamolnar@hush.com>
Thu, 24 Mar 2016 09:20:07 +0000 (10:20 +0100)
Improvements to ./configure file generation.

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

index 9400478be58d7473a6890b72163bcac10da46104..af4d891e041d271ddaa3dc4b773d83914b307213 100644 (file)
@@ -5,17 +5,12 @@
 .*
 !.git*
 
+/.configure
 /BSDmakefile
 /GNUmakefile
 /build
 /docs/doxygen
-/inspircd
-/inspircd.1
-/inspircd-genssl.1
-/inspircd.service
-/org.inspircd.plist
 /run
-/bin
 
 /include/config.h
 
index f5bbedb3feda504d1eda3d3f594ae810a2a997d6..ea4c2a50cb003e1f0345ff9a1b1febc39bddb2e5 100644 (file)
@@ -28,12 +28,22 @@ use strict;
 use warnings FATAL => qw(all);
 
 use Exporter              qw(import);
+use File::Path            qw(mkpath);
 use File::Spec::Functions qw(rel2abs);
 
-our @EXPORT = qw(get_cpu_count
+our @EXPORT = qw(create_directory
+                 get_cpu_count
                  get_version
                  module_installed);
 
+sub create_directory($$) {
+       my ($location, $permissions) = @_;
+       return eval {
+               mkpath($location, 0, $permissions);
+               return 1;
+       } // 0;
+}
+
 sub get_version {
        state %version;
        return %version if %version;
index e314e6d159305cfe0a6082072f576a04616874f8..ee96e3c6973ec26fcd8d4d0d9a5006cca1cccb48 100644 (file)
@@ -31,15 +31,17 @@ use feature ':5.10';
 use strict;
 use warnings FATAL => qw(all);
 
-use Cwd            qw(getcwd);
-use Exporter       qw(import);
-use File::Basename qw(basename);
+use Cwd                   qw(getcwd);
+use Exporter              qw(import);
+use File::Basename        qw(basename dirname);
+use File::Spec::Functions qw(catfile);
 
 use make::common;
 use make::console;
 use make::utilities;
 
-use constant CONFIGURE_CACHE_FILE    => '.configure.cache';
+use constant CONFIGURE_DIRECTORY     => '.configure';
+use constant CONFIGURE_CACHE_FILE    => catfile(CONFIGURE_DIRECTORY, 'cache.cfg');
 use constant CONFIGURE_CACHE_VERSION => '1';
 
 our @EXPORT = qw(CONFIGURE_CACHE_FILE
@@ -87,6 +89,7 @@ sub __get_template_settings($$$) {
        }
 
        # Miscellaneous information
+       $settings{CONFIGURE_DIRECTORY} = CONFIGURE_DIRECTORY;
        $settings{CONFIGURE_CACHE_FILE} = CONFIGURE_CACHE_FILE;
        $settings{SYSTEM_NAME} = lc $^O;
        chomp($settings{SYSTEM_NAME_VERSION} = `uname -sr 2>/dev/null`);
@@ -217,7 +220,7 @@ sub read_configure_cache {
        open(CACHE, CONFIGURE_CACHE_FILE) or return %config;
        while (my $line = <CACHE>) {
                next if $line =~ /^\s*($|\#)/;
-               my ($key, $value) = ($line =~ /^(\S+)="(.*)"$/);
+               my ($key, $value) = ($line =~ /^(\S+)(?:\s(.+))?$/);
                $config{$key} = $value;
        }
        close(CACHE);
@@ -225,12 +228,17 @@ sub read_configure_cache {
 }
 
 sub write_configure_cache(%) {
+       unless (-e CONFIGURE_DIRECTORY) {
+               print_format "Creating <|GREEN ${\CONFIGURE_DIRECTORY}|> ...\n";
+               create_directory CONFIGURE_DIRECTORY, 0750 or print_error "unable to create ${\CONFIGURE_DIRECTORY}: $!";
+       }
+
        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 //= '';
-               say CACHE "$key=\"$value\"";
+               say CACHE "$key $value";
        }
        close(CACHE);
 }
@@ -337,7 +345,7 @@ sub parse_templates($$$) {
 
                        # Add a default target if the template has not defined one.
                        unless (scalar keys %targets) {
-                               $targets{DEFAULT} = basename $_;
+                               $targets{DEFAULT} = catfile(CONFIGURE_DIRECTORY, basename $_);
                        }
 
                        # Second pass: parse makefile junk and write files.
@@ -417,9 +425,16 @@ sub parse_templates($$$) {
                                        push @final_lines, $line;
                                }
 
+                               # Create the directory if it doesn't already exist.
+                               my $directory = dirname $target;
+                               unless (-e $directory) {
+                                       print_format "Creating <|GREEN $directory|> ...\n";
+                                       create_directory $directory, 0750 or print_error "unable to create $directory: $!";
+                               };
+
                                # Write the template file.
                                print_format "Writing <|GREEN $target|> ...\n";
-                               open(TARGET, '>', $target) or print_error "unable to write $_: $!";
+                               open(TARGET, '>', $target) or print_error "unable to write $target: $!";
                                foreach (@final_lines) {
                                        say TARGET $_;
                                }
index 4e7b32d4963b01185923830b612d330d3933b0f9..621de0274293815f8c5bcbd728310ea3d41b4d2e 100644 (file)
@@ -88,12 +88,8 @@ sub prompt_dir($$$;$) {
                $answer = rel2abs(prompt_string($interactive, $question, $default));
                $create = prompt_bool($interactive && !-d $answer, "$answer does not exist. Create it?", 'y');
                if ($create && $create_now) {
-                       my $mkpath = eval {
-                               mkpath($answer, 0, 0750);
-                               return 1;
-                       };
-                       unless (defined $mkpath) {
-                               print_warning "unable to create $answer!\n";
+                       unless (create_directory $answer, 0750) {
+                               print_warning "unable to create $answer: $!\n";
                                $create = 0;
                        }
                }
index cc201a12654c726207af7680e5d974de9df45604..7b153a924ba2c202d11283df1ce9f67e699ab223 100644 (file)
@@ -229,16 +229,16 @@ install: target
 @IFNDEF PURE_STATIC
        [ $(BUILDPATH)/modules/ -ef $(MODPATH) ] || $(INSTALL) -m $(INSTMODE_LIB) $(BUILDPATH)/modules/*.so $(MODPATH)
 @ENDIF
-       -$(INSTALL) -m $(INSTMODE_BIN) inspircd $(BASE) 2>/dev/null
+       -$(INSTALL) -m $(INSTMODE_BIN) @CONFIGURE_DIRECTORY@/inspircd $(BASE) 2>/dev/null
        -$(INSTALL) -m $(INSTMODE_LIB) .gdbargs $(BASE)/.gdbargs 2>/dev/null
 @IFEQ $(SYSTEM) darwin
-       -$(INSTALL) -m $(INSTMODE_BIN) org.inspircd.plist $(BASE) 2>/dev/null
+       -$(INSTALL) -m $(INSTMODE_BIN) @CONFIGURE_DIRECTORY@/org.inspircd.plist $(BASE) 2>/dev/null
 @ENDIF
 @IFEQ $(SYSTEM) linux
-       -$(INSTALL) -m $(INSTMODE_LIB) inspircd.service $(BASE) 2>/dev/null
+       -$(INSTALL) -m $(INSTMODE_LIB) @CONFIGURE_DIRECTORY@/inspircd.service $(BASE) 2>/dev/null
 @ENDIF
-       -$(INSTALL) -m $(INSTMODE_LIB) inspircd.1 $(MANPATH) 2>/dev/null
-       -$(INSTALL) -m $(INSTMODE_LIB) inspircd-genssl.1 $(MANPATH) 2>/dev/null
+       -$(INSTALL) -m $(INSTMODE_LIB) @CONFIGURE_DIRECTORY@/inspircd.1 $(MANPATH) 2>/dev/null
+       -$(INSTALL) -m $(INSTMODE_LIB) @CONFIGURE_DIRECTORY@/inspircd-genssl.1 $(MANPATH) 2>/dev/null
        -$(INSTALL) -m $(INSTMODE_BIN) tools/genssl $(BINPATH)/inspircd-genssl 2>/dev/null
        -$(INSTALL) -m $(INSTMODE_LIB) docs/conf/*.example $(CONPATH)/examples
        -$(INSTALL) -m $(INSTMODE_LIB) *.pem $(CONPATH) 2>/dev/null