[maemo-commits] [maemo-commits] r16674 - projects/haf/doc/mvo
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Fri Nov 14 01:59:08 EET 2008
- Previous message: [maemo-commits] r16673 - projects/haf/trunk/dbus
- Next message: [maemo-commits] r16675 - in projects/haf/trunk/hildon-thumbnail: . daemon/plugins
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: marivoll Date: 2008-11-14 01:59:05 +0200 (Fri, 14 Nov 2008) New Revision: 16674 Modified: projects/haf/doc/mvo/system-model-2.txt Log: Configurations, meta packages. Modified: projects/haf/doc/mvo/system-model-2.txt =================================================================== --- projects/haf/doc/mvo/system-model-2.txt 2008-11-13 19:19:44 UTC (rev 16673) +++ projects/haf/doc/mvo/system-model-2.txt 2008-11-13 23:59:05 UTC (rev 16674) @@ -1,9 +1,7 @@ TODO: - - "Maemo" -> "Maemo system". - - "Releasing" -> "Releasing and Updating" - - Documentation in the archive - - Extended archive: extra categories + - Extended archive: extra categories, generalizing the "pending" + stuff. - Building binaries for the archive from secret sources @@ -42,6 +40,13 @@ Maemo OS and the add-ons: build tools, documentation tools, packaging tools, image creation tools, etc. + - Maemo contains its documentation: reference documentation that is + generated from source code, introductions and other navigational + aids to find the reference documentation, example programs, free + standing texts such as tutorials, internal design documents, etc. + These documents are automatically extracted from the archive and + published on maemo.org. + - Maemo is developed by multiple 'non-consenting' parties. Different parties work on different parts but they all work on the single Maemo project. Nokia is one party, the rest forms the @@ -402,36 +407,6 @@ [...] -* Installation - -The Maemo OS runs on a number of devices. It is installed via one or -more images that are prepared from packages in the Maemo archive (and -nothing else). - -Typically, packages are 'installed' into an image by letting the -package management tools create a root filesystem in the normal way. -Such a root filesystem can then be maintained at run-time with the -package management tools as well. Some packages might be used to -create specialized images, like the kernel image that is flashed into -its own partition without a filesystem. Some packages might be used -to pre-load files into the prepared root filesystem, or into other -filesystems. These files are then not subject to package management -at run-time, which might be appropriate for things like pre-loaded -images and videos. - -The Maemo SDK runs in Scratchbox targets. It is installed by -extracting a 'rootstrap' tarball into the target. This rootstrap -tarball is also prepared from packages in the Maemo archive (and -nothing else). - -The tools for creating the installation images and rootstrap tarballs -are contained in the Maemo archive and are maintained like any other -component. - -Both the Maemo OS in a device and the Maemo SDK in a Scratchbox target -are maintained by installing packages from the Maemo archive and -removing already installed packages with the package management tools. - * Releasing Packages are released by copying them in groups from harmattan-testing @@ -493,3 +468,142 @@ influences which version of a package is the installation candidate; packages whose Maemo-Upgrade-Only-From field is not satisfied are ignored by the package management tools. + +* Configurations + +A configuration is a named set of packages that is specified in one +way or another. They are used in a number of places where a set of +packages needs to be specified, such as when releasing or updating +harmattan-stable, and when preparing installers. + +A simple way to specify a configuration is to list its packages +explicitly. Another way might be to specify it relative to one or +more existing configurations, ony listing the packages that should be +added and removed from the 'parent' configurations. Another useful +thing is to transform the names of packages, by substituting "rx44" +for "@VARIANT@", say. + +More complicated ways to specify configurations should be allowed for. +In general, it should be possible to specify a configuration +programmatically, with access to at least all the information in the +Maemo archive. + +The packages computed in of these ways are said to be "listed" by the +configuration. + +A configuration also specifies a set of "base" configurations. + +The set of packages that are "contained" in a configuration is defined +to be the set of packages that the package management system would +install into a empty root filesystem when asked to install the listed +packages together with the listed packages of the base configurations, +minus the packages that are contained in the base configurations. + +[ The reason why the listed packages of the base configurations are + installed as well is to allow those configurations to resolve + ambiguities. A package might depend on "liba | libb", and the base + configuration might resolve this by including liba. Similar for + virtual packages. + + It should be possible to compute the base configurations for a + configuration from the dependency graph: if a listed package of + configuration B is reachable from a listed package of configuration + A, then B is a base for A. This will usually find too many bases + that might conflict with each other and prevent "apt-get install" + from doing its job. +] + +Thus, the set of listed packages in a configuration does not need to +be complete: only those packages that are not installed anyway to +satisfy a dependency need to be included. In fact, as few packages as +possible should be listed so that the normal package dependencies can +take care of assembling a working set in a flexible way. + +Depending on its intended use, configurations can have more attributes +than just a name and a list of packages. + +* Images + +The Maemo OS runs on a number of devices. It is installed via one or +more "images" that are prepared from packages in the Maemo archive +(and nothing else). + +Often, packages are 'installed' into a image by letting the package +management tools create a root filesystem in the normal way. Such a +root filesystem can then be maintained at run-time with the package +management tools as well. Packages might also be used to create more +specialized images, like the kernel image that is flashed into its own +partition without a filesystem. Some packages might be used to +pre-load files into the prepared root filesystem, or into other +filesystems. These files are then not subject to package management +at run-time, which might be appropriate for things like pre-loaded +images and videos. + +The Maemo SDK runs in Scratchbox targets. It is installed by +extracting a 'rootstrap' tarball into the target. This rootstrap is +also filesystem image that is prepared from packages in the Maemo +archive (and nothing else). + +The tools for creating these images are contained in the Maemo archive +and are maintained like any other component. They are controlled by +the attributes of a configuration. + +* Meta packages + +The package management tools in an installation are not directly aware +of configurations; they only work with packages and their +dependencies. + +However, users should be able to perform package management operations +based on configurations. For example, updates to the OS should not be +presented package by package. The user should not be expected to +recognize those packages. Rather, the OS update should be presented +as a single item to the user. + +Currently, the package management UI can only handle packages. Thus, +configurations need to represented in terms of packages. + +Some configurations list only a single package. For example, an +application might consist of tens of packages, but there is likely one +"main" package that causes the application to appear in the menu of +the Desktop. Thus, the main package of the application can be made +visible in the Application Manager. + +Other configurations need to list more than one package. The typical +example is the OS itself: there is no natural main package that can +represent it. These configurations can be represented by an +artificial "meta package". + +The packages of the configuration are used to determine the +dependencies of the meta package. Other attributes of the meta +package, such as its name and its description, are also controlled by +the configuration. + +A typical meta package will have dependencies to all packages that are +contained in its configuration. They will typically have the form "P +(= V)" or "P (>= V)" where V is the most recent version of P in the +distribution that the meta package is uploaded to. + +The "P (>= V)" form of a dependency is preferred so that +configurations can overlap without fighting each other. It also +allows partial updates in a development environment such as +harmattan-testing. Thus, if a meta package uses the strict "P (= V)" +form, a variant of the meta package should also be provided with the +"P (>= V)" form. + +Even if there is a natural main package for a configuration, it might +be advantagous to use a meta package anyway since they offer more +control. Returning to the previous example, the only thing that can +be represented in the UI of the package management tools is an update +to the main package. Updates to dependency packages are not visible +(and would likely be confusing if they were). The application package +would need to be updated artificially to pull in the updated +dependency package. It is cleaner to do use a meta package instead. + +Meta packages enter the archive like other packages. They are +normally uplaoded to harmattan-testing, except for urgent updates, +when they go to harmattan-proposed-updates. + +Other configuration can include these meta packages in their set of +listed packages. For example, a configuration that is used to control +the content of a filesystem image will refer to the
- Previous message: [maemo-commits] r16673 - projects/haf/trunk/dbus
- Next message: [maemo-commits] r16675 - in projects/haf/trunk/hildon-thumbnail: . daemon/plugins
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]