Utility for upgrading Pop!_OS and its recovery partition to new releases. This tool will be used
as a replacement for Ubuntu's do-release-upgrade script. The goal is to be less error-prone,
ensuring that critical packages are retained on upgrade, and better integration with Pop!_OS.
When launched in daemon mode (requires root), a new Dbus service will be registered, with the following details:
- Interface:
com.system76.PopUpgrade - Name:
com.system76.PopUpgrade - Path:
/com/system76/PopUpgrade
FetchUpdates (additional_strings: as, download_only: b) -> (updates_available: b, completed: s, total: s)- Creates a task which will fetch all available updates, including the additional packages.
- If an update task is already in progress,
completedandtotalwill have non-zero values. - If
updates_availablereturnsfalse, then there are no packages to fetch. - Unless
download_onlyis specified astrue, the packages will also be installed.
RecoveryUpgradeByFile (path: s) -> (result: y)- Creates a task which will upgrade the recovery partition via a file ath the
path.
- Creates a task which will upgrade the recovery partition via a file ath the
RecoveryUpgradeByRelease (version: s, arch: s, flags: q) -> (result: y)- Creates a task which will upgrade the recovery partition via the release API, using the defined details.
- If package updates are available, a
FetchUpdatestask will execute beforehand. howdefines how the recovery partition should be upgraded.- Possible options are
fileandrelease.
- Possible options are
versiondefines the suite to fetch from (ie:20.04)archdefines which variant of that version to fetch (ie:nvidia)flagssets additional configuration parameters for the task
RefreshOS () -> (result: y)ReleaseCheck () -> (current: s, next: s, build: n)- Quickly checks the
currentrelease, determines thenextrelease, and states whether an update isavailableor not.
- Quickly checks the
ReleaseUpgrade (how: q, from: s, to: s)- Creates a task to initiate a distribution release upgrade.
- The
fromdefines which suite to upgrade from. - The
todefines the suite to upgrade to. - The upgrade method performed is determined by the
how.1will use systemd to perform an offline upgrade.2will use the recovery partition to perform an offline upgrade.- Any other value will result in an error.
ReleaseRepair ()- Performs automatic repairs of any issues found which may impact system operation
- The
/etc/fstabfile will be corrected if certain mounts are missing or are mounting by the wrong ID - Source lists will also be parsed and corrected if they are missing any critical repositories
- The
- Performs automatic repairs of any issues found which may impact system operation
Status () -> (status: q, sub_status: q)- Reports the current status of the daemon, where zero indicates inactivity.
- If that
statushas asub_status, it will be set to a non-zero value. - The available statuses for the main status are:
0: Inactive,1: Fetching Packages,2: Recovery Upgrade,3: Release Upgrade,4: Package Upgrade
UpgradePackages ()- Upgrades packages for the current release, similar to performing a non-interactive upgrade normally.
PackageFetchResult (status: q)- Indicates that a
FetchUpdatestask completed - A status of
0indicate success, whereas1indicates failure
- Indicates that a
PackageFetched (package: s, completed: u, total: u)- An event that is triggered when a
FetchUpdatestask has fetched a package. packagerefers to the name of the package that was fetched.completedandtotalcan be used to track the progress of the task.
- An event that is triggered when a
PackageFetching (package: s)- An event that is triggered when a
FetchUpdatestask has begun fetching a new package. packagerefers to the name of the package that was fetched
- An event that is triggered when a
PackageUpgrade (event: a{ss})- The ADT is represented as a map of field-value pairs.
RecoveryDownloadProgress (progress: t, total: t)- Tracks the progress of the recovery files being fetched
RecoveryUpgradeEvent (event: q)- Notifies the client of a recovery upgrade event that has occurred
RecoveryUpgradeResult (result: y)- Indicates the final result of the recovery upgrade process
ReleaseUpgradeEvent (event: q)- Notifies the client of a release upgrade event that has occurred
ReleaseUpgradeResult (result: y)- Indicates the final result of the recovery upgrade process
Fetching(1): fetching recovery filesSyncing(2): syncing recovery files with recovery partitionVerifying(3): verifying checksums of fetched filesComplete(4): recovery partition upgrade completedFailed(5): recovery partition upgrade failed
UpdatingPackageLists(1): updating package lists for the current releaseFetchingPackages(2): fetching updated packages for the current releaseUpgradingPackages(3): upgrading packages for the current releaseInstallingPackages(4): ensuring that system-critical packages are isntalledUpdatingSourceLists(5): updating the source lists to the new releaseFetchingPackagesForNewRelease(6): fetching packages for the new releaseAttemptingLiveUpgrade(7): attempting live upgrade to the new releaseAttemptingSystemdUnit(8): creating a systemd unit for installing the new releaseAttemptingRecovery(9): setting up the recovery partition to install the new releaseSuccess(10): new release is ready to installSuccessLive(11): new release was successfully installedFailure(12): an error occurred while setting up the upgrade
Licensed under the GNU General Public License, Version 3.0, (LICENSE or https://www.gnu.org/licenses/gpl-3.0.en.html)
Any contribution intentionally submitted for inclusion in the work by you, shall be licensed under the GNU GPLv3.