I'm sure many of you already noticed, but unfortunately the latest release of Redcore Linux shipped with a partially broken package manager. While Portage (emerge) worked awesome as always, Sisyphus had some serious issues. Under certain circumstances, Sisyphus was unable to perform system upgrades, it may compile packages from source instead of using binary repository, and it may even downgrade packages instead of upgrading them. Many reviewers of the distribution caught these flaws, which made me wonder what is going wrong, and take another close look at the code.
As a little backstory, Sisyphus always syncs information from our git repositories or from the binary package repositories, like the portage tree, our custom ebuild overlay, portage configuration files and binary package lists. If any of them fails for some reason, problems will be quick to follow. After a rather long debugging session which lasted a few hours I managed to pinpoint the underlying piece of code which can trigger the above conditions. To make mathers worse it was recently introduced with Sisyphus's ability to switch between branches. Once switched to a new branch, syncing that branch with our git repositories simply didn't work. Enough to cause issues, as one single mismatching USE flag will make Sisyphus to compile a package from source instead of using the prebuilt binary, an out of date portage tree or ebuild overlay can trigger a downgrade instead of an upgrade, and one wrong configuration file can block the upgrade alltogether.
That being said, I fixed this rather serious issue, and while at it a few other bugfixes made their way in. Sisyphus will once again work reliably, however in order to benefit, it must be the first package to be upgraded which requires manual intervention.
emerge -Gva sisyphus (will pull in the new sisyphus v3.1909.2) sisyphus --branch=master --remote=gitlab (will reset all branch configuration, pull up to date information from our git repositories and regenerate the package metadata ... this will take a while, so be patient) sisyphus --rescue (will refresh sisyphus's binary database with up to date information)
Once done, you can upgrade the system once again using Sisyphus :