Begin add pmbootstrap_custom_build.md
This commit is contained in:
parent
4a5fd7c9f6
commit
ec0a1243de
2 changed files with 162 additions and 0 deletions
|
@ -369,3 +369,7 @@ void FlashlightUtil::findTorchDevice()
|
||||||
udev_unref(udev);
|
udev_unref(udev);
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Info utile pour le débogage de KDE Plama Mobile depuis Postmarket OS
|
||||||
|
|
||||||
|
Le fichier de log ce situe dans `~/.local/state/tinydm.log`
|
||||||
|
|
158
data_src/posts/pmbootstrap_custom_build.md
Normal file
158
data_src/posts/pmbootstrap_custom_build.md
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
---
|
||||||
|
image_path: "https://postmarketos.org/logo.svg"
|
||||||
|
slug: pmbootstrap_own_package
|
||||||
|
title: Compiler sa propre version d'un package Postmarket OS
|
||||||
|
date: 2024-02-18T00:00:00Z
|
||||||
|
description: Installation de pmbootstrap et compilation de sa propre version d'un package Postmarket OS
|
||||||
|
project_link: none
|
||||||
|
draft: true
|
||||||
|
tags:
|
||||||
|
- pmOS
|
||||||
|
- linux
|
||||||
|
---
|
||||||
|
|
||||||
|
## À propos de Postmarket OS
|
||||||
|
|
||||||
|
[Postmarket OS](https://postmarketos.org/) est une distribution basé sur [Alpine](https://www.alpinelinux.org/) conçu pour fonctionner sur les téléphones, tablette
|
||||||
|
ou sur Raspberry PI.
|
||||||
|
La communauté autour du projet propose un ensemble d'outils comme `pmbootstrap` qui permet de configurer et d'installer Postmarket OS sur son téléphone.
|
||||||
|
On peut aussi l'utiliser pour compiler son propre package et l'installer sur son téléphone facilement.
|
||||||
|
|
||||||
|
## Configuration de notre environnement de travail
|
||||||
|
|
||||||
|
Avant de pouvoir l'utiliser, il faut d'abord l'installer depuis ce [lien](https://wiki.postmarketos.org/wiki/Pmbootstrap).
|
||||||
|
|
||||||
|
Une fois installé et configuré, il faut d'abord executer les commandes suivantes:
|
||||||
|
|
||||||
|
_Met à jour le repository [pmaports.git](https://wiki.postmarketos.org/wiki/Pmaports.git) cloné en local._
|
||||||
|
> Le repo pmaports.git stocke tous les packages Alpine avec le fichier fichier `APKBUILD` utilisé par le serveur de compilation.
|
||||||
|
>
|
||||||
|
> Le fonctionnement est similaire à `PKGBUILD` pour les utilisateurs de [Archlinux](https://archlinux.org/)
|
||||||
|
>
|
||||||
|
> Ce fichier contient toute la procédure pour prepare les sources, compiler le package depuis les sources, le numéro de version
|
||||||
|
> ainsi que la procédure pour vérifier si le package fonctionne correctement.
|
||||||
|
> Généralement on utilise les tests du projet comme les tests unitaires ou les tests fonctionnels.
|
||||||
|
```bash
|
||||||
|
pmbootstrap pull
|
||||||
|
```
|
||||||
|
|
||||||
|
_Met à jour le cache de la commande APK depuis l'environnement de travail_
|
||||||
|
> L'environnement de travail ce situe par défaut dans le dossier `$HOME/.local/var/pmbootstrap/`
|
||||||
|
```bash
|
||||||
|
pmbootstrap update
|
||||||
|
```
|
||||||
|
|
||||||
|
_Supprime le dossier de la commande chroot_
|
||||||
|
> La commande chroot permet de changer la racine Linux.
|
||||||
|
> Par exemple, on peut faire `chroot $HOME/mon_dossier` et à partir de ce moment là, `/` pointera vers `$HOME/mon_dossier` dans notre shell actuel.
|
||||||
|
>
|
||||||
|
> C'est très utilisé par pmbootstrap pour configurer le système Alpine.
|
||||||
|
> Ça évite de devoir faire une VM ou un container Linux juste pour changer quelque fichier.
|
||||||
|
>
|
||||||
|
> Dans notre cas, il correspont au système pour le téléphone utilisé pour le configuré avant de l'installer ou de le tester sur notre téléphone.
|
||||||
|
>
|
||||||
|
> Par défaut, il se situe dans le dossier `$HOME/.local/var/pmbootstrap/cache_git/pmaports/`
|
||||||
|
```bash
|
||||||
|
pmbootstrap zap
|
||||||
|
```
|
||||||
|
|
||||||
|
_[Optionnel] Changer la branche du repo [pmaports.git](https://wiki.postmarketos.org/wiki/Pmaports.git)_
|
||||||
|
> `$workdir` par défaut se situe dans le dossier `$HOME/.local/var/pmbootstrap/cache_git/pmaports/`
|
||||||
|
> Example de branche utile : `kde-nightly`
|
||||||
|
```bash
|
||||||
|
git -C $workdir checkout [branch]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Compilation de notre package Alpine
|
||||||
|
|
||||||
|
Pour compiler le package, on utilise la commande `pmbootstrap build [package_name]`.
|
||||||
|
|
||||||
|
_Example de commande_
|
||||||
|
```bash
|
||||||
|
pmbootstrap \
|
||||||
|
-mp https://nightly.postmarketos.org/plasma-mobile/packages/ \
|
||||||
|
-mp http://mirror.postmarketos.org/postmarketos/ \
|
||||||
|
--details-to-stdout \
|
||||||
|
-j 32 \
|
||||||
|
-t 3600 -v \
|
||||||
|
build plasma-mobile \
|
||||||
|
--src $home/plasma-mobile/ \
|
||||||
|
--arch aarch64 \
|
||||||
|
-i \
|
||||||
|
-n
|
||||||
|
```
|
||||||
|
|
||||||
|
Dans cette example, j'ai utilisé les arguments suivants:
|
||||||
|
|
||||||
|
* `-mp` : Permet de définir un repository Alpine pour installer les packages.
|
||||||
|
> Dans l'example, j'utilise deux repos
|
||||||
|
>
|
||||||
|
> `https://nightly.postmarketos.org/plasma-mobile/packages/` : Contient la version en cours de développement de KDE Plasma Mobile
|
||||||
|
>
|
||||||
|
> `http://mirror.postmarketos.org/postmarketos/` : Le mirroir officiel de Postmarket OS
|
||||||
|
|
||||||
|
* `--details-to-stdout` : Affiche les logs stocké dans le fichier dans la console
|
||||||
|
* `-j N` : Défini le nombre core utilisé pour la compilation
|
||||||
|
> Dans mon cas, 32 core sur mon CPU.
|
||||||
|
* `-t [En seconde]` : Le nombre de secondes sans nouveau log dans le fichier avant d'abandonner la compilation
|
||||||
|
> Changé à 3600 secondes car plasma-mobile est assez long à compilé et il ne génère aucun log.
|
||||||
|
* `-v` : Mode verbeux pour les logs dans le fichier
|
||||||
|
* `--src` : Change les sources du package. Par défaut ce sont les sources défini dans le fichier `APKBUILD`
|
||||||
|
> Pour ma part, je souhaite utiliser mon propre code pour tester
|
||||||
|
* `--arch [arch]` : L'architecture CPU du téléphone
|
||||||
|
> Pour ma part, mon téléphone est en arm64v8 donc `aarch64`
|
||||||
|
* `-n` : Permet d'éviter de compiler les dépendances du package.
|
||||||
|
> En général, c'est pas recommandé par Alpine mais dans mon cas, je souhaite utilisé les dépendances depuis le repo
|
||||||
|
> mirroir officiel de Postmarket OS.
|
||||||
|
* `-i` : Permet de dire de compiler uniquement les dépendances du package défini dans le fichier `APKBUILD`
|
||||||
|
> Dans mon cas, il vient en complément de l'option `-n`, ça me permet de m'assurer de ne rien build.
|
||||||
|
> Sans cette option, il risque de compiler les sous-dépendances du package comme le noyau Linux.
|
||||||
|
|
||||||
|
Pour plus d'informations, il suffit de taper la commande
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pmbootstrap build --help
|
||||||
|
```
|
||||||
|
|
||||||
|
Et pour avoir les arguments générals
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pmbootstrap --help
|
||||||
|
```
|
||||||
|
|
||||||
|
## Envoie du package sur le téléphone
|
||||||
|
|
||||||
|
Une fois le package compilé, il suffit de demandé à `pmbootstrap` de l'envoyé sur notre téléphon via la connexion SSH.
|
||||||
|
Avec `pmbootstrap`, on utilise la commande `sideload` comme dans l'example ci-dessous.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pmbootstrap sideload plasma-mobile \
|
||||||
|
--host [SSH HOST] \
|
||||||
|
--port [SSH PORT] \
|
||||||
|
--user [SSH USER] \
|
||||||
|
--arch [ARCH] \
|
||||||
|
--install-key
|
||||||
|
```
|
||||||
|
|
||||||
|
On a les arguments suivants:
|
||||||
|
|
||||||
|
* `--host [SSH HOST]` (Ex: 192.168.1.1)
|
||||||
|
* `--port [SSH PORT]` (Ex: 22)
|
||||||
|
* `--user [SSH USER]` (Ex: 192.168.1.1)
|
||||||
|
* `--arch [ARCH]` : Permet de modifier la valeur défini pour le téléphone (Ex: aarch64)
|
||||||
|
* `--install-key` : Permet d'installer la clef utilisé pour la vérification des packages de la machine actuelle.
|
||||||
|
> Tout gestionnaire de paquet comme APK, vérifie si le paquet est valide par rapport à la signature électronique du mainteneur du paquet.
|
||||||
|
> Dans notre cas, la signature ne sera pas valide car le paquet n'est pas compilé par le mainteneur original donc ont rajoute notre signature.
|
||||||
|
|
||||||
|
|
||||||
|
Pour revenir en arrière, il suffit de taper la commande ci-dessous depuis le téléphone ou depuis la connexion SSH
|
||||||
|
> APK va réinstaller les paquets depuis les repos officiels.
|
||||||
|
```bash
|
||||||
|
sudo apk upgrade -a
|
||||||
|
```
|
||||||
|
|
||||||
|
En cas de problème liée à des conflits de fichier, on peut utiliser cette commande
|
||||||
|
> Cette commande va forcer APK à écraser les fichiers en conflit.
|
||||||
|
```bash
|
||||||
|
sudo apk fix --force
|
||||||
|
```
|
Loading…
Reference in a new issue