rc-file: Fix option handling for indirect option values from cmdline.

kdesrc-build has long supported a means to alter configuration file
options by assuming that --long-flag entries on the cmdline that do not
match specific cmdline options, but *do* match known option names, would
simply be read in to override the config file's option. In this way, you
could easily override num-cores if you set it in the rc-file at the
command line with something like "kdesrc-build --num-cores 2 khtml".

kdesrc-build has also long supported a method to re-use option values
elsewhere in the rc-file, with a "indirect option" syntax:

      my-debug-type  -DCMAKE_BUILD_TYPE=Release
    end global

    module-set fr-set
      repository kde-projects
      use-modules frameworks plasma-browser-integration
      cmake-options -DBUILD_TESTING:BOOL=ON ${my-debug-type}
    end module-set

Prior to this commit, however, trying to override my-debug-type (in this
example) from the command line would have failed to do the right thing.

This is because the command line parameter was previously embedded
immediately into the build context object as the context was being
established, after the rc-file was read.

However the rc-file parsing code assumed the build context was already
loaded with relevant options that would be needed for indirect options.
And this assumption was OK, except that command line options had not
been installed into the build context by this point.

A further complication is that even if the build context were correct,
its values would be overwritten when the rc-file parsing code was
reading the "global" options... because these parsed options and values
were going straight back into the build context object.

By the time the rc-file reading code moved onto reading modules and
module-sets, the build context had already forgotten the value
previously set from the command line.

This is fixed by:

1. Fixing the ordering of the command line options being fed into the
   build context so that it happens prior to parsing the rc-file.
2. Within the rc-file parser, reading 'global' options into a temporary
   first to prevent the build context cmdline-based options from being
3. Passing the command line options to the rc-file parser so that it can
   protect these options in the build context (which must still be
   updated during parsing to allow the "indirect" options to be properly

This was a surprising amount of work, but fixes #64.
2 jobs for work/mpyne/set-cmdline-opts-early in 2 minutes and 28 seconds (queued for 2 seconds)
Status Job ID Name Coverage
passed #91138


passed #91137