Empaquetage des environnements d’exécution

Comme nous l’avons vu, chaque Flatpak cible un environnement d’exécution particulier, qui fournit des binaires, des bibliothèques et des fichiers de données partagés, et est monté dans /usr lorsque le Flatpak est exécuté.

Tous les Flatpak de Fedora ciblent l’environnement d’exécution org.fedora.Platform. L’utilisation d’un seul environnement d’exécution simplifie la maintenance et évite aux utilisateurs d’avoir à télécharger plusieurs environnements d’exécution. En général, vous n’aurez pas besoin de modifier cet environnement d’exécution lors de la création d’une application, puisque tous les paquets supplémentaires dont vous aurez besoin seront fournis avec l’application. Toutefois, si vous trouvez un bogue dans l’environnement d’exécution et que vous souhaitez aider à le corriger, ou si vous voulez participer à la maintenance des environnements d’exécution Fedora, il est utile de savoir comment les environnements d’exécution sont construits.

En plus de org.fedora.Platform, trois autres environnements d’exécution sont construits dans l’infrastructure de Fedora

org.fedoraproject.Sdk

Il s’agit d’un SDK qui étend org.fedora.Platform avec des compilateurs et des fichiers d’entête pour permettre de construire des applications en utilisant l’outil flatpak-builder.

org.fedoraproject.BasePlatform

Il s’agit d’un environnement d’exécution plus petit. Il est similaire à l’environnement d’exécution en amont de org.freedesktop. L’idée de cet environnement d’exécution est qu’il établit un ensemble de paquets qui peuvent être reportés dans un environnement d’exécution d’entreprise Linux qui aura un support et une stabilité à long terme.

org.fedoraproject.BaseSdk

Le SDK correspondant à org.fedoraproject.BasePlatform

Les environnements d’exécution sont définis de manière similaire aux Flatpak. Le contenu des environnements d’exécution est défini dans le module flatpak-runtime. Les différents profils du module définissent les différents environnements d’exécution.

ce qui suit décrit la façon dont les choses seront organisées. Actuellement, seul le flatpak-runtime principal est construit, et est défini directement dans modules/flatpak-runtime

Ensuite, les environnements d’exécution sont intégrés dans des conteneurs — mais comme il y a plusieurs conteneurs construits pour le même environnement d’exécution, la simplification consistant à avoir à la fois le module et la définition du conteneur dans un seul dépôt git ne fonctionne pas. Au lieu de cela, les définitions des conteneurs se trouvent dans des dépôts git séparés : flatpaks/flatpak-runtime, flatpaks/flatpak-sdk, flatpaks/flatpak-base-runtime et flatpaks/flatpak-base-sdk. Ces dépôts git doivent être étroitement synchronisés avec l’environnement d’exécution, mais n’ont pas besoin d’être modifiés très souvent.

Les listes de paquets dans flatpak-runtime.yaml sont maintenues avec des scripts qui se trouvent également dans le module flatpak-runtime. L’idée est que le contenu de l’environnement d’exécution devrait être un surensemble de l’environnement d’exécution org.gnome.Platform, avec l’ajout de bibliothèques qui sont fréquemment utilisées par des applications populaires non-GNOME, telles que qt5 et SDL. Pour plus d’informations sur les scripts de maintenance, voir README.md dans le module.

La définition du module Flatpak-runtime comporte une section xmd qui comprend des informations supplémentaires utilisées au moment de la construction de l’application pour permettre au Flatpak résultant de dépendre automatiquement du bon environnement d’exécution et de la bonne version sans qu’il soit nécessaire de le spécifier séparément.