From 4458e00acf2e24c17fa49a745689411623dba79d Mon Sep 17 00:00:00 2001 From: Marcus Comstedt <marcus@mc.pp.se> Date: Sat, 28 Apr 2018 12:22:31 +0200 Subject: [PATCH] export.pike: Fix fix_configure This was broken in multiple ways: * Did not consider timestamp on aclocal.m4 * Did not consider post_modules * Did not check configure scripts directly under modules or post_modules * When fixing modules, it looked for the configure scripts in the build directory rather than the source directory * Did not use the run_autoconfig wrapper This has caused xenofarm to export snapshots with out of date configure scripts. --- bin/export.pike | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/bin/export.pike b/bin/export.pike index 2756866feb..ac7126e754 100755 --- a/bin/export.pike +++ b/bin/export.pike @@ -69,17 +69,18 @@ void run( string cmd, mixed ... args ) } } -void fix_configure(string dir) +void fix_configure(string dir, Stdio.Stat aclocal) { Stdio.Stat config=file_stat(dir+"/configure"); Stdio.Stat config_in=file_stat(dir+"/configure.in"); if(config_in) { - if(!config || config_in->mtime > config->mtime) + if(!config || config_in->mtime > config->mtime || + (aclocal && aclocal->mtime > config->mtime)) { werror("Fixing configure in "+dir+".\n"); - run( "autoconf", ([ "cwd":dir ]) ); + run( pike_base_name+"/src/run_autoconfig", "--no-recursion", dir ); } } } @@ -371,11 +372,18 @@ int main(int argc, array(string) argv) if (snapshot) vpath = sprintf("Pike-v%d.%d-snapshot", @version); - fix_configure(pike_base_name+"/src"); + Stdio.Stat aclocal=file_stat(pike_base_name+"/src/aclocal.m4"); + + fix_configure(pike_base_name+"/src", aclocal); + fix_configure(pike_base_name+"/src/modules", aclocal); + fix_configure(pike_base_name+"/src/post_modules", aclocal); foreach(get_dir(pike_base_name+"/src/modules"), string fn) if(Stdio.is_dir(pike_base_name+"/src/modules/"+fn)) - fix_configure("modules/"+fn); + fix_configure(pike_base_name+"/src/modules/"+fn, aclocal); + foreach(get_dir(pike_base_name+"/src/post_modules"), string fn) + if(Stdio.is_dir(pike_base_name+"/src/post_modules/"+fn)) + fix_configure(pike_base_name+"/src/post_modules/"+fn, aclocal); rm(vpath); symlink(".", vpath); -- GitLab