Patterns and Images
Sailfish OS uses mic tool for creating OS images. The mic tool utilizes a kickstart file (.ks) for configuring the image creation. There exists a kickstart file for each device.
The packages to be installed on the image are listed in %packages
section. In order to not have to list all packages in the kickstart files we utilise patterns, which are really meta RPM packages i.e. empty packages with dependencies to other packages.
Device configuration
A device configuration pattern is the main pattern defining the contents of an image. The pattern is called patterns-sailfish-device-configuration-@DEVICE@
, where @DEVICE@ specifies the device the pattern is for. The patterns is created during the HW Adaptation process, using a template as a starting point.
Common device configuration
For each device there exists common device configuration pattern (patterns-sailfish-device-configuration-common-@DEVICE@). The purpose of this pattern is that it contains packages which are common to most HW configurations. In practise it depends on Sailfish applications pattern and Saifish UI pattern. It also pulls in Sailfish hardware testing tool (CSD). In Sailfish OS 4.0.1 and later it’s also possible to use patterns-device-configuration pattern, i.e. without the -@DEVICE@ suffix.
Device adaptation pattern
The device adaptation pattern (patterns-sailfish-device-adaptation-@DEVICE@) pulls in all the device specific packages, Hybris packages, etc. Generally speaking all packages that are needed in order to use the hardware are pulled in from here.
Sailfish OS package groups
Various Sailfish OS package groups are pulled in via patterns. The most important patterns are listed below.
Sailfish Applications
The basic Sailfish Applications are pulled in from Sailfish Applications pattern (patterns-sailfish-applications).
Sailfish UI
Sailfish UI (patterns-sailfish-ui) pattern pulls in Sailfish Core, Jolla systemd user session with qt5 and wayland, Jolla homescreen for lipstick, and Jolla actdead charging animation.
Sailfish Core
Sailfish Core consists of two patterns, patterns-sailfish-core and patterns-sailfish-core-devices. These patterns pull in packages which are required on Sailfish devices, including middleware.
Sailfish Middleware
Generic Sailfish Middleware is pulled in by patterns-sailfish-mw.
Device Tools
Sailfish OS Device Tools (patterns-sailfish-device-tools) pattern brings in common debugging tools which are used during early stages of device bring-up.
RND
Sailfish RND (patterns-sailfish-rnd) pulls in packages which are used for on-device development, testing and debugging.
Cellular Applications
Sailfish Cellular Applications (patterns-sailfish-cellular-apps) pattern pulls in cellular applications: MMS engine, SimKit, Voicecall UI, etc.
Store Applications
Sailfish Store Applications (patterns-sailfish-store-applications) pulls in Sailfish Apps which are available through Jolla Store: Calculator, Calendar, Email, Notes, Mediaplayer, Office and Weather.
Consumer Requirements
Consumer requirements pattern (patterns-sailfish-consumer-generic) pulls in features which are standard in Jolla provided Sailfish OS images for consumer devices. If all features are not wanted, a different pattern can be used instead.
Customer Content
Sailfish customer content (patterns-sailfish-customer-content-default) pulls in customer content: ambiences, app configs, browser, gallery, profile settings and VPN plugins.
SDK Target configuration
Sailfish SDK Target configuration (patterns-sailfish-configuration-sdk-target) pulls in all packages needed in a SDK Target.
SDK Tooling configuration
Sailfish SDK Tooling configuration (patterns-sailfish-configuration-sdk-tooling) pulls in all packages needed in a SDK Tooling.