Allow users to specify local overrides for targets and mappings
lcitool has generally catered to the Libvirt's needs in terms of package versions, which are pretty conservative. For example, lcitool is hardcoding a version of Meson equal to 0.56. QEMU on the other hand has different needs since some features were added to Meson for the project's benefit in versions as recent as 0.63.
Until now, QEMU has managed to avoid the problem by shipping its own version of Meson. However, the next release of QEMU will face a breaking point in that Meson 0.63 does not work with the 3.6 version of Python that is provided by CentOS Stream 8 and OpenSUSE LEAP 15.3.
lcitool already supports custom project files outside the repository. In theory these were supposed to be temporary to break a dependency cycle:
This creates a chicken and egg problem when a project changes its build pre-requisites, as libvirt-ci needs to be updated if-and-only-if the project is updated and vice-versa.
However, in practice QEMU's project file for one has not been updated in a long time and is thoroughly obsolete. It is only kept in the lcitool repository for testing purposes.
The reality is that different projects have different needs and Libvirt's acceptance of EOL'd Python versions is not satisfactory for everybody. Therefore, this small series allows overriding the mappings and target facts as well.