This commit is contained in:
parent
96237a6fad
commit
5ac60a1aee
2 changed files with 219 additions and 0 deletions
|
@ -32,6 +32,10 @@ Il permet de configurer l'IDE, compiler, exécuter et gérer les dépendances av
|
|||
|
||||
Pour le configurer, il suffit de suivre la procédure sur ce [lien](https://community.kde.org/Get_Involved/development/Set_up_a_development_environment).
|
||||
|
||||
> **EDIT**: Aujourd'hui, il est recommandé d'utiliser `kde-builder`. C'est le même outil sauf qu'il est écrit en python au lieu de perl. C'est plus simple pour les développeurs qui souhaitent contribuer au projet, car python est plus connu. La configuration reste exactement la même.
|
||||
>
|
||||
> [Pour plus d'info](https://kde-builder.kde.org/en/getting-started/before-building.html#install-kde-builder)
|
||||
|
||||
### Mes premières difficultés
|
||||
|
||||
Il faut savoir que quand j'ai commencé à vouloir contribuer au projet KDE. Le projet était en train de migrer de QT5 à QT6.
|
||||
|
|
215
content/post/kdedev_on_immuable/index.md
Normal file
215
content/post/kdedev_on_immuable/index.md
Normal file
|
@ -0,0 +1,215 @@
|
|||
---
|
||||
title: Configurer kde-builder sur des bases immuables et lancer un projet KDE
|
||||
description: Je vais vous expliquer comment configurer kde-builder sur des bases immuables comme NixOS ou Fedora Atomic et vous allez lancer votre premier programme compilé avec kde-builder.
|
||||
slug: kdedev_on_immuable
|
||||
date: 2024-10-06 00:00:00+0000
|
||||
categories:
|
||||
- Linux
|
||||
tags:
|
||||
- KDE
|
||||
weight: 1 # You can add weight to some posts to override the default sorting (date descending)
|
||||
---
|
||||
|
||||
## Introduction
|
||||
|
||||
Les systèmes d'exploitation à base immuable, tels que NixOS ou Fedora Atomic, offrent de nombreux avantages en termes de stabilité et de sécurité. Cependant, ils présentent également des défis uniques pour les développeurs, notamment lorsqu'il s'agit de configurer des environnements de développement comme kde-builder. Dans ce post, nous explorerons comment surmonter ces obstacles en utilisant des outils comme distrobox ou toolbox, permettant ainsi aux développeurs de profiter des avantages des systèmes immuables tout en conservant la flexibilité nécessaire pour travailler efficacement avec kde-builder.
|
||||
|
||||
## Préparer son environnement
|
||||
|
||||
### Introduction
|
||||
|
||||
La préparation de l'environnement de développement est essentielle pour utiliser kde-builder sur des systèmes immuables. Les outils et étapes varient selon la distribution : Fedora Atomic intègre toolbox, facilitant le processus, tandis que NixOS nécessite la configuration manuelle de distrobox.
|
||||
Je vais donc dans un premier temps expliquer comment installer distrobox sur NixOS. Ensuite, je finirais par la configuration générale pour Fedora Atomic et aussi pour Nix OS.
|
||||
|
||||
### Installation de distrobox sur Nix OS
|
||||
|
||||
Pour installer distrobox, il suffit de rajouter dans sa configuration `configuration.nix` ou dans son `flake` la configuration suivante:
|
||||
|
||||
```nix
|
||||
# Active docker
|
||||
virtualisation.docker = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# Rajoute l'utilisateur au group docker pour éviter d'utiliser la commande sudo tout le temps.
|
||||
# Par contre, ça rajoute un risque d'élévation de privilège sur le système
|
||||
# Voir le warning ici https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user
|
||||
users.users.<user>.extraGroups = [ "docker" ];
|
||||
|
||||
# On peut aussi l'ajouter en rootless
|
||||
virtualisation.docker.rootless = {
|
||||
enable = true;
|
||||
# L'option setSocketVariable définit la variable DOCKER_HOST pour l'instance Docker rootless pour les utilisateurs normaux par défaut.
|
||||
setSocketVariable = true;
|
||||
};
|
||||
|
||||
# Si vous souhaitez utiliser podman à la place
|
||||
virtualisation.containers.enable = true;
|
||||
virtualisation = {
|
||||
podman = {
|
||||
enable = true;
|
||||
|
||||
# Ajoute l'alias `docker` pour une utilisation plus transparente avec les outils compatibles docker seulement
|
||||
dockerCompat = true;
|
||||
|
||||
# Nécessaire pour que les conteneurs sous podman-compose puissent communiquer entre eux.
|
||||
defaultNetwork.settings.dns_enabled = true;
|
||||
};
|
||||
};
|
||||
|
||||
# On rajoute distrobox
|
||||
environment.systemPackages = with pkgs; [ distrobox ];
|
||||
```
|
||||
|
||||
Une fois la configuration ajouté, il suffit de taper la commande:
|
||||
|
||||
Sans flake
|
||||
```nix
|
||||
nixos-rebuild switch
|
||||
```
|
||||
|
||||
Avec flake
|
||||
```nix
|
||||
nixos-rebuild switch --flake [path du flake]#[nom de la configuraiton]
|
||||
```
|
||||
|
||||
## Création du container pour travailler
|
||||
|
||||
### NixOS Distrobox
|
||||
|
||||
Pour créer le container avec distrobox, on peut passer par ce fichier `distrobox.ini`
|
||||
|
||||
```ini
|
||||
; Nom de notre environnement
|
||||
[kdedev]
|
||||
image=quay.io/fedora/fedora:latest
|
||||
; Change le home directory si vous souhaitez isoler votre environnement de travail de votre home directory host
|
||||
home="${HOME}/.distrobox_home/kdedev"
|
||||
; Uniquement si vous possedez une carte NVIDIA. Distrobox va intégrer des patchs pour mieux gérer les intégrations avec NVIDIA.
|
||||
nvidia=true
|
||||
; Si vous souhaitez faire une image rootless
|
||||
root=false
|
||||
; Pull l'image durant la création de l'environnement
|
||||
pull=true
|
||||
```
|
||||
|
||||
Ensuite, il suffit de taper la commande pour créer notre environnement nommé `kdedev`
|
||||
|
||||
```bash
|
||||
distrobox assemble create
|
||||
```
|
||||
|
||||
Une fois l'environnement créer, il reste une dernière étape à faire.
|
||||
Je recommande de rajouter ceci dans votre `~/.bashrc` ou dans le `bashrc` situé dans le container configuré avec `home`:
|
||||
|
||||
```bash
|
||||
alias new_shell="env -u PATH -u QML2_IMPORT_PATH -u QT_PLUGIN_PATH -u NIXPKGS_QT6_QML_IMPORT_PATH -u XDG_CONFIG_DIRS bash -l"
|
||||
```
|
||||
|
||||
Vous pouvez l'éditer plus facilement en allant dans votre environnement de travail avec:
|
||||
|
||||
```bash
|
||||
distrobox enter kdedev
|
||||
```
|
||||
|
||||
Cet alias peut-être utile pour retirer les variables d'environnements que rajoute NixOS. Sur Fedora Atomic, ça ne pose pas de problème, car ils respectent la FHS donc les librairies pointent au même endroit que dans le container. Sauf que Nix OS ne respecte pas la FHS (pour de bonnes raisons), donc on peut avoir des conflits lors de la compilation ou de l'exécution de programme que l'on aura compilé avec `kde-builder`.
|
||||
|
||||
> La FHS est une structure de fichier normalisé dans le monde Linux [plus d'info ici](https://fr.wikipedia.org/wiki/Filesystem_Hierarchy_Standard)
|
||||
|
||||
Pour l'utiliser, une fois dans votre environnement de travail, il suffit de faire:
|
||||
|
||||
```bash
|
||||
distrobox enter kdedev # Pour rentrer dans votre environnement de travail
|
||||
new_shell
|
||||
```
|
||||
|
||||
### Fedora Toolbox
|
||||
|
||||
Pour la configuration avec Fedora Toolbox, c'est assez simple, car Fedora intègre tout par défaut. Il suffit de taper la commande:
|
||||
|
||||
```bash
|
||||
toolbox create -r [numéro de release fedora] [nom de l'environnement]
|
||||
```
|
||||
|
||||
Dans notre cas, ça sera:
|
||||
|
||||
```bash
|
||||
toolbox create -r 40 kdedev
|
||||
```
|
||||
|
||||
**Note**: À l'heure ou j'écris le post, j'ai encore des soucis pour lancer `kwin` avec Fedora Toolbox. J'ai des problèmes de permission sur les DRM. Je pense que c'est lié à `selinux`.
|
||||
|
||||
J'obtiens l'erreur ci-dessous lors du lancement de `kwin_wayland`
|
||||
|
||||
```bash
|
||||
KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
|
||||
```
|
||||
|
||||
> DRM : C'est Direct Rendering Manager et non Digital Rights Management [pour plus d'infos](https://en.wikipedia.org/wiki/Direct_Rendering_Manager)
|
||||
|
||||
## Test de notre environnement
|
||||
|
||||
Avant de lancer notre test, il faut installer `kde-builder`. Vous pouvez voir mon post précédent [ici]({{< ref "/post/kde_contribution.md#ma-configuration" >}}) ou vous pouvez suivre ce [lien](https://kde-builder.kde.org/en/getting-started/before-building.html#install-kde-builder) qui est le même que dans le post.
|
||||
|
||||
**Rappel** Il faut l'installer dans votre environnement créer juste avant.
|
||||
|
||||
|
||||
```bash
|
||||
distrobox enter kdedev
|
||||
```
|
||||
__NixOS Distrobox__
|
||||
|
||||
|
||||
```bash
|
||||
toolbox enter kdedev
|
||||
```
|
||||
__Fedora Toolbox__
|
||||
|
||||
Une fois votre environnement configurer, normalement vous pouvez tester de compiler `solid` avec la commande :
|
||||
|
||||
```bash
|
||||
kde-builder solid
|
||||
```
|
||||
|
||||
Puis de lancer solid avec la commande:
|
||||
|
||||
```bash
|
||||
source "$HOME/kde/build/solid/prefix.sh" && solid-hardware6 list
|
||||
```
|
||||
|
||||
Voilà 🙂 Normalement vous êtes prêt à travailler sur KDE avec un système immuable.
|
||||
|
||||
## Note pour le démarrage de KDE Plasma Mobile
|
||||
|
||||
Pour plasma-mobile, il est nécessaire de configurer d'autres variables d'environnements. Voici le script que j'utilise :
|
||||
|
||||
```bash
|
||||
source "$HOME/kde/build/plasma-mobile/prefix.sh"
|
||||
|
||||
QT_QPA_PLATFORM=offscreen plasma-mobile-envmanager --apply-settings
|
||||
|
||||
# Environment variables
|
||||
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
|
||||
export QT_QUICK_CONTROLS_MOBILE=1
|
||||
export PLASMA_PLATFORM=phone:handheld
|
||||
export QT_QUICK_CONTROLS_STYLE=org.kde.breeze
|
||||
|
||||
QT_QPA_PLATFORM=wayland dbus-run-session kwin_wayland --xwayland "plasmashell -p org.kde.plasma.mobileshell" --width 360 --height 720
|
||||
```
|
||||
> [Source](https://invent.kde.org/plasma/plasma-mobile/-/wikis/Building-and-Testing-Locally#running-the-shell-in-a-window)
|
||||
|
||||
Vous pouvez aussi lancer le menu du haut sans lancer tout `kwin` avec le script :
|
||||
|
||||
```bash
|
||||
source "$HOME/kde/build/plasma-mobile/prefix.sh"
|
||||
|
||||
QT_QPA_PLATFORM=offscreen plasma-mobile-envmanager --apply-settings
|
||||
|
||||
# Environment variables
|
||||
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
|
||||
export QT_QUICK_CONTROLS_MOBILE=1
|
||||
export PLASMA_PLATFORM=phone:handheld
|
||||
export QT_QUICK_CONTROLS_STYLE=org.kde.breeze
|
||||
|
||||
qmlscene-qt6 "$HOME/kde/src/plasma-mobile/tests/ActionDrawerTest.qml"
|
||||
```
|
Loading…
Reference in a new issue