This appears to be a mismatch between what the parent `mozboot.bootstrap.Bootstrapper` class and the `CentOSFedoraBootstrapper` subclass assume the `upgrade_mercurial()` method's responsibilities are. Looking at "python/mozboot/mozboot/base.py", line 542, in `ensure_mercurial_modern()`: I'd guess the method assumes that the `upgrade_mercurial()` method not only updates Mercurial but also installs Mercurial if it is missing. It calls the `upgrade_mercurial()` method regardless of whether Mercurial is already installed and regardless of how it was installed. The overridden method in `CentOSFedoraBootstrapper` always runs `dnf update mercurial`. It's assuming that Mercurial is already present and was installed via the package manager. It fails if neither of those are true, causing the error.
Bug 1513775 Comment 1 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
This appears to be a mismatch between what the parent `mozboot.base.BaseBootstrapper` class and the `CentOSFedoraBootstrapper` subclass assume the `upgrade_mercurial()` method's responsibilities are. Looking at "python/mozboot/mozboot/base.py", line 542, in `ensure_mercurial_modern()`: I'd guess the method assumes that the `upgrade_mercurial()` method not only updates Mercurial but also installs Mercurial if it is missing. It calls the `upgrade_mercurial()` method regardless of whether Mercurial is already installed and regardless of how it was installed. The overridden method in `CentOSFedoraBootstrapper` always runs `dnf update mercurial`. It's assuming that Mercurial is already present and was installed via the package manager. It fails if neither of those are true, causing the error.