-
-
Notifications
You must be signed in to change notification settings - Fork 132
Preparing a new release based on a new Ubuntu codename
To rebase elementary OS on a new Ubuntu release, use the following process:
We will use a switch from Ubuntu jammy
to Ubuntu lunar
as an example.
- Clone https://github.com/elementary/metapackages
- Create a new branch for the new Ubuntu release (e.g.
lunar
) from the previous Ubuntu release branch (e.g.jammy
) - In the new branch, in
update.cfg
replace instances of previous Ubuntu release with the new one. - Commit and push new branch to repo
- Create a new branch for the new Ubuntu release (e.g.
- Clone https://github.com/elementary/seeds
- Create a new branch for the new Ubuntu release (e.g.
lunar
) from the previous Ubuntu release branch (e.g.jammy
) - In the new branch, in
.github/workflows/update.yml
replace instances of previous Ubuntu release with the new one. - You may also need to change the container image that the workflow uses if the current one (usually
rolling
) doesn't point to a version that is the same or newer than the Ubuntu release we're trying to build against. - Update the instances of the previous Ubuntu release with the new one in
STRUCTURE
- Commit and push new branch to repo
- Create a new branch for the new Ubuntu release (e.g.
- Clone https://github.com/elementary/platform
- Create a new branch for the new Ubuntu release (e.g
lunar
) from the previous Ubuntu release branch (e.gjammy
) - In the new branch, in
.github/workflows/update.yml
replace instances of previous Ubuntu release with the new one. - You may also need to change the container image that the workflow uses if the current one (usually
rolling
) doesn't point to a version that is the same or newer than the Ubuntu release we're trying to build against. - Commit and push new branch to repo
- Create a new branch for the new Ubuntu release (e.g
- Wait for the GitHub actions runs to complete on both repositories.
- The new branch of https://github.com/elementary/metapackages should be committed to by the GitHub actions.
- Take note of any removed packages from these commits. This forms the list of packages that need to be built in Launchpad for the new codename. (e.g. https://github.com/elementary/metapackages/commit/bc133fb5d22a36574a00ec9d999e6ae7afc5e135)
- Force an import of the metapackages repository on Launchpad: https://code.launchpad.net/~elementary-os/elementaryos/+git/metapackages
- Create a new recipe from this repository pointing to the new codename branch, this should be named like
seed-metapackages-lunar-daily
- Enable the new codename for the
overlay
package and request a build: https://code.launchpad.net/~elementary-os/+recipe/os-patches-enabler - Enable the new codename for the
icons
package and request a build: https://code.launchpad.net/~elementary-os/+recipe/icons-daily - Wait for the builds to complete and publish! 🍵
- Once the Launchpad builds above are completed, clone https://github.com/elementary/docker
- Copy the previous unstable (
horus-unstable
) folder to a new codename (e.g.ubuntu-lunar-unstable
) - Modify the Dockerfile in the new folder, replacing the old codename with new
jammy
->lunar
- Do a test build of the Docker image with:
docker build .
- If there are no failures, add the new folder name to the lists in
.github/workflows/ci.yml
and.github/workflows/test.yml
- Push the changes to the repository
Note: Once some of the packages have been built against this codename as per below, you may optionally symlink development-target
to have the GitHub CI workflows run against the new codename.
Next is juggling package dependencies to get things published to the PPA in the right order. You may wish to locally run the Docker container created above and test these packages build against new library versions before enabling the Launchpad recipes.
- Enable the new codename for the
granite7
package, and request a build: https://code.launchpad.net/~elementary-os/+recipe/granite-7-daily - If the GTK3 version of
granite
is still relevant at the time of reading, enable the new codename and request a build: https://code.launchpad.net/~elementary-os/+recipe/granite-daily - Wait for the granite packages to build and publish before continuing 🍵
- Enable the new codename for the
gala
package, and request a build: https://code.launchpad.net/~elementary-os/+recipe/gala-daily - Wait for gala to build and publish before continuing 🍵
- Enable the new codename for the
wingpanel
package, and request a build: https://code.launchpad.net/~elementary-os/+recipe/wingpanel-daily - Enable the new codename for the
switchboard
package, and request a build: https://code.launchpad.net/~elementary-os/+recipe/switchboard-daily -
NB: At the time of reading, the
switchboard
package may have been replaced by the GTK4settings
package, so enable the new codename for that and build it too: https://code.launchpad.net/~elementary-os/+recipe/settings-daily
Once the above important packages have been built and published, it should be possible to enable the new codename for all other packages without bumping into too many dependency issues. Here's a (possibly incomplete/outdated) list:
- https://code.launchpad.net/~elementary-os/+recipe/appcenter-daily
- https://code.launchpad.net/~elementary-os/+recipe/default-settings-daily
- https://code.launchpad.net/~elementary-os/+recipe/elementary-fonts-daily
- https://code.launchpad.net/~elementary-os/+recipe/wallpapers-daily
- https://code.launchpad.net/~elementary-os/+recipe/calculator-daily
- https://code.launchpad.net/~elementary-os/+recipe/camera-daily
- https://code.launchpad.net/~elementary-os/+recipe/code-daily
- https://code.launchpad.net/~elementary-os/+recipe/feedback-daily
- https://code.launchpad.net/~elementary-os/+recipe/greeter-daily
- https://code.launchpad.net/~elementary-os/+recipe/initial-setup-daily
- https://code.launchpad.net/~elementary-os/+recipe/mail-daily
- https://code.launchpad.net/~elementary-os/+recipe/music-daily
- https://code.launchpad.net/~elementary-os/+recipe/notifications-daily
- https://code.launchpad.net/~elementary-os/+recipe/onboarding-daily
- https://code.launchpad.net/~elementary-os/+recipe/portals-daily
- https://code.launchpad.net/~elementary-os/+recipe/screenshot-tool-daily
- https://code.launchpad.net/~elementary-os/+recipe/settings-daily
- https://code.launchpad.net/~elementary-os/+recipe/settings-bluetooth-daily
- https://code.launchpad.net/~elementary-os/+recipe/settings-daemon-daily
- https://code.launchpad.net/~elementary-os/+recipe/settings-mouse-touchpad-daily
- https://code.launchpad.net/~elementary-os/+recipe/settings-a11y-daily
- https://code.launchpad.net/~elementary-os/+recipe/settings-applications-daily
- https://code.launchpad.net/~elementary-os/+recipe/settings-datetime-daily
- https://code.launchpad.net/~elementary-os/+recipe/settings-locale-daily
- https://code.launchpad.net/~elementary-os/+recipe/settings-notifications-daily
- https://code.launchpad.net/~elementary-os/+recipe/settings-power-daily
- https://code.launchpad.net/~elementary-os/+recipe/shortcut-overlay-daily
- https://code.launchpad.net/~elementary-os/+recipe/sideload-daily
- https://code.launchpad.net/~elementary-os/+recipe/sound-theme-daily
- https://code.launchpad.net/~elementary-os/+recipe/stylesheet-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-wacom-daily
- https://code.launchpad.net/~elementary-os/+recipe/tasks-daily
- https://code.launchpad.net/~elementary-os/+recipe/terminal-daily
- https://code.launchpad.net/~elementary-os/+recipe/vala-lint-daily
- https://code.launchpad.net/~elementary-os/+recipe/videos-daily
- https://code.launchpad.net/~elementary-os/+recipe/calendar-daily
- https://code.launchpad.net/~elementary-os/+recipe/epiphany-daily
- https://code.launchpad.net/~elementary-os/+recipe/evince-daily
- https://code.launchpad.net/~elementary-os/+recipe/fileroller-daily
- https://code.launchpad.net/~elementary-os/+recipe/pantheon-agent-polkit-daily
- https://code.launchpad.net/~elementary-os/+recipe/files-daily
- https://code.launchpad.net/~elementary-os/+recipe/photos-daily
- https://code.launchpad.net/~elementary-os/+recipe/session-settings-daily
- https://code.launchpad.net/~elementary-os/+recipe/dock-daily
- https://code.launchpad.net/~elementary-os/+recipe/plymouth-theme-daily
- https://code.launchpad.net/~elementary-os/+recipe/slingshot-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-a11y-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-about-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-applications-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-bluetooth-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-datetime-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-display-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-keyboard-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-locale-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-mouse-touchpad-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-networking-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-notifications-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-onlineaccounts-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-pantheon-shell-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-parental-controls-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-power-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-printers-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-security-privacy-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-sharing-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-sound-daily
- https://code.launchpad.net/~elementary-os/+recipe/switchboard-plug-users-daily
- https://code.launchpad.net/~elementary-os/+recipe/wingpanel-indicator-a11y-daily
- https://code.launchpad.net/~elementary-os/+recipe/wingpanel-indicator-bluetooth-daily
- https://code.launchpad.net/~elementary-os/+recipe/wingpanel-indicator-datetime-daily
- https://code.launchpad.net/~elementary-os/+recipe/wingpanel-indicator-keyboard-daily
- https://code.launchpad.net/~elementary-os/+recipe/wingpanel-indicator-network-daily
- https://code.launchpad.net/~elementary-os/+recipe/wingpanel-indicator-nightlight-daily
- https://code.launchpad.net/~elementary-os/+recipe/wingpanel-indicator-notifications-daily
- https://code.launchpad.net/~elementary-os/+recipe/wingpanel-indicator-power-daily
- https://code.launchpad.net/~elementary-os/+recipe/wingpanel-indicator-session-daily
- https://code.launchpad.net/~elementary-os/+recipe/wingpanel-indicator-sound-daily
See the wiki sidebar (below on mobile) for other sections, sub-pages, etc.