Hi, On 2022-08-09 08:37:16 -0400, Andrew Dunstan wrote: > On 2022-08-09 Tu 03:10, Andres Freund wrote: > > Hi, > > > > I was looking at re-unifying gendef2.pl that the meson patchset had > > introduced > > for temporary ease during hacking with gendef.pl. Testing that I noticed > > that > > either I and my machine is very confused, or gendef.pl's check whether it > > can > > skip work is bogus. > > > > I noticed that, despite having code to avoid rerunning when the input files > > are older than the .def file, it always runs. > > > > # if the def file exists and is newer than all input object files, skip > > # its creation > > if (-f $deffile > > && (-M $deffile > max(map { -M } <$ARGV[0]/*.obj>))) > > { > > print "Not re-generating $defname.DEF, file already exists.\n"; > > exit(0); > > } > > > > My understanding of -M is that it returns the time delta between the file > > modification and the start of the script. Which makes the use of max() > > bogus, > > since it'll return the oldest time any input has been modified, not the > > newest. And the condition needs to be inverted, because we want to skip the > > work if $deffile is *newer*, right? > > > > Am I missing something here? > > > No, you're right, this is bogus. Reversing the test and using min > instead of max is the obvious fix. > > > > I'm tempted to just remove the not-regenerating logic - gendef.pl shouldn't > > run if there's nothing to do, and it'll e.g. not notice if there's an > > additional input that wasn't there during the last invocation of gendef.pl. > > > > Maybe, need to think about that more.
Any thoughts? I'd like to commit 0003 in https://postgr.es/m/20220811002012.ju3rrz47i2e5tdha%40awork3.anarazel.de fairly soon. I did fix the bogus "die" message I added during some debugging since posting that... Greetings, Andres Freund