]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - modulemanager
Replace std::deque with std::vector in spanningtree and related modules
[user/henk/code/inspircd.git] / modulemanager
index 928e95152efbbf1bc08a17ba9cbed9137c2b82a5..37aebac9bf4a1e65c262712093be93c582e43603 100755 (executable)
@@ -185,7 +185,7 @@ sub resolve_deps {
                        my $ver = $todo{$mod};
                        my $info = $modules{$mod}{$ver} or die "no dependency information on $mod $ver";
                        for my $dep (@{$info->{depends}}) {
-                               $dep =~ /^(\S+)(?: ([-0-9.]+))?/ or die "Bad dependency $dep from $info->{from}";
+                               $dep =~ /^(\S+)(?: \S+)?/ or die "Bad dependency $dep from $info->{from}";
                                my($depmod, $depvers) = ($1,$2);
                                next if $todo{$depmod} && ver_in_range($todo{$depmod}, $depvers);
                                # need to install a dependency
@@ -198,7 +198,7 @@ sub resolve_deps {
                                }
                        }
                        for my $dep (@{$info->{conflicts}}) {
-                               $dep =~ /^(\S+)(?: ([-0-9.]+))?/ or die "Bad dependency $dep from $info->{from}";
+                               $dep =~ /^(\S+)(?: (\S+))?/ or die "Bad dependency $dep from $info->{from}";
                                my($depmod, $depvers) = ($1,$2);
                                next unless $todo{$depmod} && ver_in_range($todo{$depmod}, $depvers);
                                # if there are changes this round, maybe the conflict won't come up after they are resolved.
@@ -278,11 +278,15 @@ resolve_deps(0);
 
 $| = 1; # immediate print of lines without \n
 
+# whether or not to invoke ./configure -modupdate after processing
+my $regen_modules_list = 0;
+
 print "Processing changes for $action...\n";
 for my $mod (keys %installed) {
        next if $todo{$mod};
        print "Uninstalling $mod $installed{$mod}\n";
        unlink "src/modules/$mod.cpp";
+       $regen_modules_list = 1;
 }
 
 my $count = scalar keys %todo;
@@ -308,13 +312,21 @@ for my $mod (sort keys %todo) {
        } else {
                print " - HTTP $stat\n";
        }
+       $regen_modules_list = 1;
+}
 
-       # write database of installed versions
-       open SRC, '>.modulemanager' or die "can't write installed versions to .modulemanager, won't be able to track upgrades properly: $!";
-       foreach my $key (keys %mod_versions)
-       {
-               print SRC "$key $mod_versions{$key}\n";
-       }
-       close SRC;
+# write database of installed versions
+open SRC, '>.modulemanager' or die "can't write installed versions to .modulemanager, won't be able to track upgrades properly: $!";
+foreach my $key (keys %mod_versions)
+{
+       print SRC "$key $mod_versions{$key}\n";
+}
+close SRC;
+
+# regenerate makefiles if necessary
+if ($regen_modules_list)
+{
+       print "Done... Re-generating makefiles\n";
+       system "./configure -modupdate";
 }
-print "Done!\n";
+print "Finished!\n";