On Fri, Jul 14, 2017 at 8:27 AM, Christian Couder <christian.couder@xxxxxxxxx> wrote: > On Thu, Jul 13, 2017 at 10:55 PM, Jeff King <peff@xxxxxxxx> wrote: >> On Thu, Jul 13, 2017 at 08:57:01PM +0200, Christian Couder wrote: >> >>> >> We want to make it possible to store the parameters to the 'run' >>> >> script in a config file. This will make it easier to store, reuse, >>> >> share and compare parameters. >>> > >>> > Because perf-lib is built on test-lib, it already reads >>> > GIT-BUILD-OPTIONS. >>> >>> Actually the 'run' script also sources GIT-BUILD-OPTIONS, so maybe >>> this is not necessary. >> >> Ah, right. The one that comes via perf-lib gets the variables into the >> test scripts themselves. But anything "run" would need itself would come >> from the source it does itself. And that's where GIT_PERF_MAKE_OPTS has >> an effect. >> >>> Also are the variables in GIT-BUILD-OPTIONS exported already? >> >> No, I don't think so. But because both "run" and the scripts themselves >> source them, they're available more or less everywhere, except for >> sub-processes inside the scripts. > > Ok, I see. Actually after taking another look at that, it looks like the following happens: 1) the run script sources the original GIT-BUILD-OPTIONS file from ../.. relative to its location 2) a git version is built in "build/$rev" using GIT_PERF_MAKE_OPTS which generates a new GIT-BUILD-OPTIONS file in "build/$rev/" 3) when the actual perf scripts are run they source the original GIT-BUILD-OPTIONS file (through perf-lib.sh which sources test-lib.sh) I wonder how useful 1) is, as the variables sourced from original GIT-BUILD-OPTIONS are not used inside the "run" script and not available to its child processes as they are not exported. Is it just so that if people add GIT_PERF_* variables to their config.mak before building they can then have those variables used by the run script? I also wonder if it would be better at step 3) to source the GIT-BUILD-OPTIONS file generated at step 2) instead of the original one, because they can be different as the options in $GIT_PERF_MAKE_OPTS will be baked into the new GIT-BUILD-OPTIONS file. (Of course if $GIT_PERF_MAKE_OPTS was added to config.mak before building, then they will be in the original one too. But $GIT_PERF_MAKE_OPTS should work without that.)